arguments对象是所有(非箭头)函数中都可用的局部变量,可以使用arguments对象在函数中引用函数的参数。
该对象可以获取函数的参数值和参数长度。
如:arguments[0]、arguments[1]、arguments.length
arguments对象不是一个数组,它是类数组,但除了length属性和索引之外没有array的其他属性,例如pop方法。但可以转换为一个真正的Array:
法1:var args=Array.prototype.slice.call(arguments);
法2:var args=[].slice.call(arguments);
法3:const args=Array.from(arguments);
法4:const args=[...arguments];
例子
遍历参数求和
function add() { var sum=0; var len=arguments.length; for(var i=0;i<len;i++){ sum+=arguments[i]; } alert(sum); } add();//0 add(1);//1 add(1,2,3,4);//10
arguments对象的callee属性返回正在被执行的Function对象,callee属性是arguments对象的一个成员,仅当相关函数正在执行时才可用。
callee属性的初始值就是正在被执行的Function对象,这允许匿名的递归函数
var sum = function (n) { if (1 == n) { return 1; } else { return n + arguments.callee(n - 1); } } alert(sum(6));
arguments.caller指向调用当前函数的函数