参数扩展与收集
ES6新增了扩展操作符,使用它可以非常简洁地操作和组合集合数据,可以在接收参数或传递参数时使用
场景一:把数组分为单个参数(扩展参数)
let arr = [25, 65, 12, 77,38];
function getsum() { //arguments伪数组会默认接收到所有参数
let sum = 0;
for(let i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
}
/*下面的两个操作是等价的*/
console.log(getsum(...arr)); //217
console.log(getsum(25, 65, 12, 77,38)); //217
//不只如此,您还可以这样使用,传入更多参数
console.log(getsum(3, ...arr)); //220
console.log(getsum(...arr, 45, 12)); //274
console.log(getsum(-5, ...arr, 12)); //224
console.log(getsum(...arr, ...[2, 3, 1])); //243
场景二:把参数整合为数组 (收集参数)
function getsum(...values) {
return values.reduce((x,y) => x + y, 0) ; //0的意思是如果数组是空的返回0,防止报错
}
console.log(getsum(1,5,4)); //=> 10
console.log(getsum(...[2, 56, 24, 12]); //=> 94
console.log(getsum()); //=> 0
以下情况需要特别注意
function getsum(...values, lastvalue) {} //这样声明会报错,因为显然lastvalue接收不到任何参数
function getsum(firstvalue, ...values) {} //这样是可以的