搜尋

首頁  >  問答  >  主體

javascript - 參數.callee

function f (){
    return arguments.callee;
}


f();

這裡的return有什麼作用呢?

某草草某草草2843 天前446

全部回覆(4)我來回復

  • 给我你的怀抱

    给我你的怀抱2017-05-16 13:24:39

    arguments.callee 就是這個函數,好像 ES6 已經不建議用了。

    題目的代碼等同於

    function f (){
        return f;
    }

    回覆
    0
  • ringa_lee

    ringa_lee2017-05-16 13:24:39

    返回函數體本身

    回覆
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 13:24:39

    如果你想知道你這段程式碼的用途以及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();

    回覆
    0
  • 某草草

    某草草2017-05-16 13:24:39

    嚴格模式下報錯誤。 不建議使用這個。

    回覆
    0
  • 取消回覆