JS中的arguments对象

    在JavaScript中,arguments属于当前对象的一个内置属性,arguments是一个类Array对象,但不是Array。比如:

Array.prototype.testArg = "test";
function funcArg() {
    console.log(funcArg.arguments.testArg); 
    console.log(funcArg.arguments[0]);
}
 
console.log(new Array().testArg); // result: "test"
funcArg(10);                // result: "undefined"  "10"

arguments对象的长度是由实参个数决定的,形参是函数内部重新开辟内存空间储存的变量,与arguments对象内存空间不重叠。对于arguments和值都存在的情况下,两者值都是同步的,但是针对一个无值得情况下,无值是不会得以同步的,如:

function fun(a, b, c){
    console.log(arguments.length);   // result: "2"
    a = 100;
    console.log(arguments[0]);       // result: "100"
    arguments[0] = "testArg";
    console.log(a);                  // result: "testArg"
    console.log(c);                  // result: "undefined"
    c = 2012;
    console.log(arguments[2]);       // result: "undefined"
}
 
fun(1, 2);

arguments对象中有一个非常有用的属性:callee。arguments.callee返回此arguments对象所在的当前函数引用。在使用函数递归调用时推荐使用arguments.callee代替函数名本身。

function sum(a){
    if(a==1){
        return 1;
    }
    return a + arguments.callee(a-1);
}
var num = sum(4);
console.log(num); // 10

在平时的封装和使用JS过程中,callee方法用的比较少,其它一般都会用到,现在,我在用几句话在来总结一下对arguments的理解:

1、arguments像数组,是一个Arguments对象实例。

2、arguments有length属性,代表传给函数的参数个数。

3、可以数组下标访问参数,如arguments[0],无数组其它方法。

4、存储的是实参不是行参。

5、可以使用callee属性调用自身。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值