一、argumens伪数组
JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性。也就是说所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有实参。arguments是一个伪数组,因此及可以进行遍历,例如我们要求多个数之和时,就可以用到arguments:
function sum(){
let sum;
for(let i = 0; i<arguments.length;i++){
sum += arguments[i];
}
return sum
}
其中需要注意的时arguments虽然可以使用length属性,且length属性会根据传入实参的变化而变化,但是arguments并不是数组,因为它并不能使用Array构造函数中原型对象prototype的方法,举个小例子:
var arr = new Array(1,2,3,4,5);
arr.forEach(function{...任意操作..});
function random(){
arguments.forEach(function(){...任意操作...}) //此时浏览器就会报错
}
二、rest参数
ES6中的rest参数与argument是伪数组作用相类似,都可以用来存储所以传入的实参,形式为(...变量名),不同的是该变量名是一个数组。同样还是多个数字求和:
function sum(...values){
let sum;
for(var val of values){
sum += val;
}
return sum;
}
此外还要注意rest参数之后不能再有其他参数即function f(a,...b,c)就会报错
网友评论