[ES6] 23. Rest Parameters & Spread Parameters
Rest Parameters:
In ES5, when you don't know how many paramters will be passed in, you can use arguments:
let sum = function(){
    let result = 0;
    for(let i = 0; i < arguments.length; i++){
        result += arguments[i];
    }
    return result;
}
let result = sum(1,2,3);
In ES6, you can use Rest params:
let sum = function(...numbers){
    let result = 0;
    for(let i = 0; i < numbers.length; i++){
        result += numbers[i];
    }
    return result;
};
describe("rest paramters", function(){
    it("is like varargs", function(){
        let doWork = function(name, ...numbers){
            let result = 0;
            numbers.forEach(function(n){
                result += n;
            });
            return result;
        };
        let result = doWork("Scott", 1,,2,3);
        expect(result).toBe(6);
    });
});
...Spread:
It looks the same as Rest Parameters, Spread uses to spread an array.
it("should sum up", function(){
    let doWork = function(x,y,z){
        return x+y+z;
    };
    expect(doWork(...[1,2,3])).toBe(6);
});
<!DOCTYPE html>
<html>
<head>
<script data-require="traceur@*" data-semver="0.0.0-20140302" src="https://traceur-compiler.googlecode.com/git/bin/traceur.js"></script>
<script>
traceur.options.experimental = true;
</script>
<script data-require="traceur@*" data-semver="0.0.0-20140302" src="https://traceur-compiler.googlecode.com/git/src/bootstrap.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head> <body>
<script type="module">
let a = [4,5,6];
let b = [1,2,3, ...a, 7,8,9];
document.write(b); //1,2,3,4,5,6,7,8,9
</script>
</body>
</html>
[ES6] 23. Rest Parameters & Spread Parameters的更多相关文章
- ADOQuery.Parameters: Property Parameters does not exist
		
Exception class EReadError with message 'Property Parameters does not exist'. Exception class EReadE ...
 - Typescript & React & optional parameters & default parameters
		
Typescript & React & optional parameters & default parameters Typescript & optional ...
 - [ES6] Array -- Destructuring and Rest Parameters && for ..of && Arrat.find()
		
We can use the destructing and rest parameters at the same time when dealing with Array opration. Ex ...
 - 【转】es6的拓展运算符 spread ...
		
原文:https://blog.csdn.net/qq_30100043/article/details/53391308 The rest parameter syntax allows us to ...
 - ...:ES6中扩展运算符(spread)和剩余运算符(rest)详解
		
1.扩展运算符(spread) demo1:传递数据代替多个字符串的形式 let test= function(a,b,c){ console.log(a); console.log(b); cons ...
 - Database Initialization Parameters for Oracle E-Business Suite Release 12 (文档 ID 396009.1)
		
In This Document Section 1: Common Database Initialization Parameters For All Releases Section 2: Re ...
 - Device trees, Overlays and Parameters of Raspberry Pi
		
Raspberry Pi's latest kernels and firmware, including Raspbian and NOOBS releases, now by default us ...
 - SPRING IN ACTION 第4版笔记-第五章BUILDING SPRING WEB APPLICATIONS-004-以query parameters的形式给action传参数(@RequestParam、defaultValue)
		
一. 1.Spring MVC provides several ways that a client can pass data into a controller’s handler method ...
 - Oracle Net Listener Parameters (listener.ora)(转)
		
12/20 7 Oracle Net Listener Parameters (listener.ora) This chapter provides a complete listing of th ...
 
随机推荐
- github Git 原理简介
			
由于Git是一个DVCS(Distributed Version Control System,分布式版本控制系统),不同于传统的CVS/SVN版本系统那样必须由一个中央服务器来管理所有的版本记录,它 ...
 - dropdownlist无刷新传值
			
既然局部刷新,其实没有必要用服务器控件,即便用了服务器控件,也不应该将AutoPostBack="true" ,这将导致页面回发并刷新,因此去掉下拉框的该属性 至于局部改变div的 ...
 - DHTMLX 前端框架 建立你的一个应用程序 教程(十)--保存表单中的数据
			
保存表单中的数据 现在我们所要做的是 当用户点击提交按钮的时候 我们将表单中的数据进行保存操作. 我们可以使用dhtmlxDataProcessor. 来进行操作.它是一个数据组件,可以提供与服务器 ...
 - 乱序双发射 和 GHB的分支预测
			
乱序执行(out-of-order execution)是指CPU采用了允许将多条指令不按程序规定的顺序分开发送给各相应电路单元处理的技术.比方Core乱序执行引擎说程序某一段有7 条指令,此时CPU ...
 - 【HDOJ】1356 The Balance
			
扩展欧几里得的应用. /* 1356 */ #include <iostream> #include <sstream> #include <string> #in ...
 - 【HDOJ】2103 Family planning
			
题目挺有意思.虽然不是很难. #include <stdio.h> int main() { unsigned int m, n, case_n; unsigned ; scanf(&qu ...
 - 用 C# 读取二进制文件
			
当想到所有文件都转换为 XML时,确实是一件好事.但是,这并非事实.仍旧还有大量的文件格式不是XML,甚至也不是ASCII.二进制文件仍然在网络中传播,储存在磁盘上,在应用程序之间传递.相比之下,在处 ...
 - GitHub常用 库
			
来自: http://www.jianshu.com/p/6475c90e8b4d 网络请求库 https://github.com/AFNetworking/AFNetworking https:/ ...
 - html5 svg 第八章 文字text
			
虽然它可能是真实的,每一个画面讲述了一个故事,这是完全正确的,用言语来帮助讲故事.因此,SVG有几个元素,让你将文本添加到您的图形. 文本术语 Text Terminology 在我们调查的主要方法添 ...
 - VS2013 MVC Web项目使用内置的IISExpress支持局域网内部机器(手机、PC)访问、调试
			
VS2013内置了IISExpress.做asp.net MVC的web项目开发时,Ctrl+F5和F5启动项目运行(后者是调试模式)的同时都会打开IISExpress,事实上本机对该web项目走的就 ...