关于arguments的长度
arguments是在普通函数中的参数数组,使用它来访问传入的每个参数值。
arguments是一个伪数组的形式,其长度依据函数调用时传入的参数数目而定,若在函数中没有显示修改这个属性,则这个属性不会随着手动使用下标添加元素而更改。
在一个函数当中, 使用下标访问元素修改arguments数组:
arguments[9] = 1;
console.log("the arguments' length is ", arguments.length);
console.log(arguments);
输出结果为:
the arguments' length is 1
Arguments(1) [0, 9: 1, callee: ƒ, Symbol(Symbol.iterator): ƒ]//这里的Arguments后面的(1)是我自己添加的,chrome在长度为1的时候不会输出
可以看出,是为arguments增加了一个以下标为键的键值对。
若在使用下标修改arguments之前显式的修改length属性的值,后修改的数据的下标若在length范围内,则会增加到”数组“内,反之则依旧会增加一个以下标为键的键值对。
arguments.length = 3;
arguments[1] = 1;
arguments[9] = 1;
console.log("