【JS*知识*arguments】

本文介绍了JavaScript中函数内部的arguments对象,它是一个类数组,用于保存传入的所有参数。arguments对象的重要属性callee指向拥有该arguments的函数,使得函数能够自我引用,即使函数被覆盖也能正常工作。通过举例说明了arguments.callee在函数递归和防止函数引用丢失中的作用。
摘要由CSDN通过智能技术生成

函数内部属性之arguments

  • 1.arguments是函数内部的一个特殊对象,如果在控制台中打印,可以看到其原型上的constructor为Object;
  • 2.arguments是一个类数组,因为它可以使用数组的方括号语法来访问函数参数;
  • 3.主要用途是保存函数参数,它包含着传入函数中的所有参数。例如一个函数传入了2个参数,那么arguments[0]就是第一个参数;
  • 4.argument对象有一个重要的属性,叫callee,是一个指针,指向拥有这个arguments对象的函数
经典例子
function fn(num){
    if(num <= 1){
        return 1;
    }
    return num * fn(num-1)
}

function fn(num){
    if(num <= 1){
        return 1;
    }
    return num * argument.callee(num-1)
}

let newFn = fn;
fn = function(){
    return 0;
};

console.log(newFn(5)) // 120
console.log(fn(5))  // 0

如果不使用指针,那么fn就会处于一个耦合状态,调用newFn的结果就会是0
而使用了指针之后,newFn指向的就是第一个fn函数,即使后面fn被覆盖成一个返回0的普通函数,也依然可以正常使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值