在JavaScript中, arguments 是一个类数组对象。代表传给一个function的参数列表。
function printArgs() {
console.log(arguments);
}
printArgs("A", "a", 0, { foo: "Hello, arguments" });
Javascript并没有重载函数的功能,但是Arguments对象能够模拟重载。Javascrip中国每个函数都会有一个Arguments对象实例arguments,它引用着函数的实参,可以用数组下标的方式"[]"引用arguments的元素。arguments.length为函数实参个数,arguments.callee引用函数自身。
当不确定有多少参数传递的时候,用arguments来获取。
arguments其实是当前函数的一个内置对象。数组元素作为函数的参数。
arguments对象中存储了传递的所有实参。
Arguments的展示形式是一个伪数组,可以遍历。
arguments对象和Function是分不开的。因为arguments这个对象不能显式创建。
arguments只在非箭头函数中存在,箭头函数中的arguments会从父级作用域中继承。
伪数组有以下特点
1 具有length属性
2 按照索引的方式存储数据
3 不具有数组的push,pop等方法
function func()
{
console.log("The number of parameters is " + arguments.length);
}
func();
func(1, 2);
func(1, 2, 3);
执行结果如下:
The number of parameters is 0
The number of parameters is 2
The number of parameters is 3
arguments转换为数组的几种方式:
1. Array.from(arguments)
2. Array.prototype.slice.call(arguments)
3. [].slice.call(arguments)
4.[...arguments]
属性
arguments.callee 指向参数所属的当前执行的函数。
只想调用当前函数的函数。
(function fe() {
console.log( arguments);
}(1))