ECMAScript6中剩余参数的用法

少年易老学难成,一寸光阴不可轻

定义

如果函数的最后一个命名参数以...为前缀,则它将成为一个数组,其中从0(包括)到theArgs.length(排除)的元素由传递给函数的实际参数提供。

剩余参数和 arguments对象的区别

  • 剩余参数只包含那些没有对应形参的实参,而 arguments 对象包含了传给函数的所有实参。
  • arguments对象不是一个真正的数组,而剩余参数是真正的 Array实例,也就是说你能够在它上面直接使用所有的数组方法,比如 sort,map,forEach或pop。
  • arguments对象还有一些附加的属性 (如callee属性)。

一般的求和函数

1
2
3
4
5
function sum() {
return Array.from(arguments).reduce((sum, no) => sum + no, 0);
}

console.log( sum(1,3,4));

使用剩余参数改写

1
2
3
4
5
function sum(...numbers) {
return numbers.reduce((prev, surr) => prev + surr, 0);
}

console.log( sum(1,3,4));

其他用法

1
2
3
4
5
6
const palyer = ['yangzie', 'male', 12, 13, 14, 15];
const [name, sex, ...scores] = palyer;

console.log(name);
console.log(sex);
console.log(scores);
1
2
3
4
5
function rate(rate, ...numbers) {
console.log(rate, numbers);
}

rate(0.98, 10,20,30);

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Rest_parameters