rest参数简介:
ES6新增了rest参数,使用形式(…变量名
),用于接收函数多余的参数(这样就可以不用使用arguments
对象了),与rest参数搭配使用的变量是一个数组,函数多余的参数会放进这个数组中。
例子1:
function demo(...values){
let sum=0;
for(let i of values){
sum +=i;
}
return sum;
}
add(1,2,3,4,5,6);
上面例子中,demo
函数是一个求和函数,使用rest参数,可以向demo
函数传入任意数目参数。
注意: arguments
不是数组,而是一个类似数组的对象(具有length
属性)。
例子2:
下面是用rest参数改写数组push
方法的例子:
function push(array,...values){
values.forEach(function(value){
array.push(value);
})
console.log(array);
}
let a = [1,2];
push(a,3,4,5,6,7,8,9); //Array(9) [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
使用时需要注意的点:
1.rest参数必须是函数的最后一个参数,否则会报错
function demo(a,...value,c){ } //SyntaxError: parameter after rest parameter
2.rest参数不会被计入函数的
length
属性,因为函数的
length
属性的定义是该函数预期传入参数的个数。
function demo(a,b,...value){
}
demo.length; //2