function f (){ return arguments.callee; } f();
這裡的return有什麼作用呢?
arguments.callee 就是這個函數,好像 ES6 已經不建議用了。
題目的代碼等同於
function f (){ return f; }
返回函數體本身
如果你想知道你這段程式碼的用途以及arguments.callee的作用可以先跟著我修改兩次你的程式碼,看看效果,並自己總結一下,再接著看那個大概的解釋
增加一行程式碼:alert(1); 并在调用的fn()后面再添加一个括号[ 改为fn()() ],最終如:
alert(1);
fn()
fn()()
function f() { alert(1); return arguments.callee(); } f()();
增加一行程式碼:alert(1);,并将arguments.callee;改为arguments.callee();,最終如下:
arguments.callee;
arguments.callee();
function f() { alert(1); return arguments.callee(); } f();
解釋 arguments 是JS裡面一個內建對象,存在於任何函數[ function ]中,而callee則是arguments對像中的一個方法指向調用它的這個函數本體,這裡就是說它就相當於是f,调用callee等同于你又调用了一次f,其實callee多數情況是在匿名函數內部使用,如:
arguments 是JS裡面一個內建對象,存在於任何函數[ function ]中,而callee則是arguments對像中的一個方法指向調用它的這個函數本體,這裡就是說它就相當於是f,调用callee等同于你又调用了一次f,其實callee多數情況是在匿名函數內部使用,如:
f
callee
(function(){ alert(1); return arguments.callee(); })()
return
這裡的return就是回傳整個函數本身·f透過上面的解釋你可以知道這裡的arguments.callee就等同于f,如:
arguments.callee
function f() { alert(1); return arguments.callee; } f(); ↑↓等价于 function f() { alert(1); return function f(){ alert(1); }; } f();
嚴格模式下報錯誤。 不建議使用這個。
arguments.callee 就是這個函數,好像 ES6 已經不建議用了。
題目的代碼等同於
返回函數體本身
如果你想知道你這段程式碼的用途以及arguments.callee的作用可以先跟著我修改兩次你的程式碼,看看效果,並自己總結一下,再接著看那個大概的解釋
方法一
增加一行程式碼:
alert(1);
并在调用的fn()
后面再添加一个括号[ 改为fn()()
],最終如:方法二
增加一行程式碼:
alert(1);
,并将arguments.callee;
改为arguments.callee();
,最終如下:關於
return
這裡的return就是回傳整個函數本身·f
透過上面的解釋你可以知道這裡的
arguments.callee
就等同于f
,如:嚴格模式下報錯誤。 不建議使用這個。