javascript - arguments.callee
問題描述
function f (){ return arguments.callee;}f();
這里的return有什么作用呢?
問題解答
回答1:arguments.callee 就是這個函數,好像 ES6 已經不推薦用了。
題目的代碼等同于
function f (){ return f;}回答2:
返回函數體本身
回答3:如果你想知道你這段代碼的用途以及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();回答4:
嚴格模式下報錯。 不推薦使用這個。
相關文章:
1. 老哥們求助啊2. javascript - vue-router怎么不能實現跳轉呢3. python - 模擬滑動驗證碼,有源碼,求解4. 就一臺服務器,mysql數據庫想實現自動備份,如何設計?5. 在MySQL中新增字段時,報錯??6. npm鏡像站全新上線7. css3 - 請問一下在移動端CSS布局布局中通常需要用到哪些元素,屬性?8. java - 想使用別人項目中maven引入的jar包,就是那個.class文件,要怎么操作?9. java - 安卓電視盒子取得了root權限但是不能安裝第三方應用,請問該怎么辦?10. html5 - angularjs中外部模版加載無法使用
