少年易老学难成,一寸光阴不可轻
定义
如果函数的最后一个命名参数以...
为前缀,则它将成为一个数组,其中从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