-
首先,定义foo方法如下:
function foo(a, b){ console.log(a+b); }
此时由于js不要求函数传入的参数和函数定义的参数完全对应,数量也可以不一样,因此我们可以这样传:
foo(1, 2, 3, 4);
foo(1);
对于这种参数不一定的情况,我们可以通过arguments关键字来获取所有的参数,arguments是类似于数组但结构是map的对象,里面存放的是参数索引-参数的值的映射关系,我们可以遍历得到:
for (let i = 0; i < arguments.length; i++) {
console.log(arguments[i]);
}
不过,每次都得通过这样的方式获取所有的参数,很不方便,那么有没有一种方式,让我们方便的获取哪些除了必须参数之外的不定参数呢? -
rest参数
ES6最新引入了rest参数,它就是来表示形参中,除了必须参数之外的所有参数,此时我们这样定义函数foo:
function foo(a,b, ...rest){
//use a,b
console.log(rest);
}
由于rest本身是个数组,所以我们可以获取里面的参数。另外,如果连必须参数都没有传递够,那么它就是空数组。
网友评论