为了账号安全,请及时绑定邮箱和手机立即绑定

arguments.callee

arguments.callee

慕标5832272 2018-11-14 14:13:41
function f (){    return arguments.callee;}f();这里的return有什么作用呢?
查看完整描述

1 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

如果你想知道你这段代码的用途以及arguments.callee的作用可以先跟着我修改两次你的代码,看看效果,并自己总结一下,再接着看那个大概的解释

方法一

增加一行代码:alert(1); 并在调用的fn()后面再添加一个括号[ 改为fn()() ],最终如:

function f(){
    alert(1);    return arguments.callee();
}
f()();

方法二

增加一行代码:alert(1);,并将arguments.callee;改为arguments.callee();,最终如下:

function f(){
    alert(1);    return arguments.callee();
}
f();

解释

arguments 是JS里面一个内置对象,存在于任何函数[ function ]中,而callee则是arguments对象中的一个方法指向调用它的这个函数本体,这里就是说它就相当于是f,调用callee等同于你又调用了一次f,其实callee多数情况是在匿名函数内部使用,如:

    (function(){
        alert(1);
        return arguments.callee();
    })()

关于return

这里的return就是返回整个函数本身·f
通过上面的解释你可以知道这里的arguments.callee就等同于f,如:

function f(){
    alert(1);    return arguments.callee;
}
f();

↑↓等价于function f(){
    alert(1);    return function f(){
            alert(1);
            };
}
f();


查看完整回答
反对 回复 2018-12-14
  • 1 回答
  • 0 关注
  • 382 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信