arguments对象

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指向调用当前函数的函数

原文地址:https://www.cnblogs.com/xiaoan0705/p/10453052.html