js的arguments属性以及相关用法

属性

arguments.callee

指向当前执行的函数。

arguments.caller 

指向调用当前函数的函数。

arguments.length

指向传递给当前函数的参数数量。

arguments[@@iterator]

返回一个新的Array迭代器对象,该对象包含参数中每个索引的值。

注意:现在在严格模式下,arguments对象已与过往不同。arguments[@@iterator]不再与函数的实际形参之间共享,同时caller属性也被移除。

例子1:遍历参数求和

function add() {
    var sum =0,
        len = arguments.length;
    for(var i=0; i<len; i++){
        sum += arguments[i];
    }
    return sum;
}
add()                           // 0
add(1)                          // 1
add(1,2,3,4);                   // 10

例子2:定义连接字符串的函数

function myConcat(separator) {
  var args = Array.prototype.slice.call(arguments, 1);
  return args.join(separator);
}

//你可以传递任意数量的参数到该函数,并使用每个参数作为列表中的项创建列表。

myConcat(", ", "red", "orange", "blue");

例子3:剩余参数、默认参数和解构赋值参数

function foo(...args) {
  return args;
}
foo(1, 2, 3);  // [1,2,3]

例子4:立即函数用递归求阶乘方法

// callee指向当前执行的函数。
    var jc = (function (n) {
        if (n == 1) return 1;
        return n * arguments.callee(n - 1);
    }(4))
    console.log(jc)

例子5:caller指向调用当前函数的函数

function test() {
        fun1();
    }

    function fun1() {
        console.log(fun1.caller)
    }
    test();

猜你喜欢

转载自blog.csdn.net/Candy_mi/article/details/87931174