arguments对象是所有(非箭头)函数中都有的局部变量(内置属性)。用来引用函数中的参数。arguments对象有length属性,也可以用方括号([])来访问第X个参数。
function demo1(a1,a2,a3){
var param1 = arguments[1];
//这相当于 var param1 = a1;
result arguments.length;
}
demo1(1,2,3)
// 3
但是arguments对象不是数组类型,它依旧是对象类型。
function demo2(){
console.log(typeof arguments);
}
// 'object'
arguments对象不是数组(Array),但是我们可以将它转变成数组,已获得数组的原生方法
var args = Array.prototype.slice(arguments);
// 等同于
var args = [].slice(arguments);
// 等同于
const args = Array.from(arguments);
// 等同于
const args = [...arguments];
我们刚刚说过,arguments是(非箭头)函数的内置属性,数据类型是“Object”,这代表着,arguments对象也有自己的内置属性,刚刚我们只介绍了length属性,下面详细的介绍一下:
arguments.callee : 指向当前执行的函数
arguments.length : 指向传递给当前函数的参数数量
arguments[@@iterator] :返回一个Array迭代器对象,迭代器中包含参数中每个索引的值。