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();

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值