javascript - arguments.callee
問題描述
function f (){ return arguments.callee;}f();
這里的return有什么作用呢?
問題解答
回答1:arguments.callee 就是這個函數(shù),好像 ES6 已經(jīng)不推薦用了。
題目的代碼等同于
function f (){ return f;}回答2:
返回函數(shù)體本身
回答3:如果你想知道你這段代碼的用途以及arguments.callee的作用可以先跟著我修改兩次你的代碼,看看效果,并自己總結(jié)一下,再接著看那個大概的解釋
方法一增加一行代碼:alert(1); 并在調(diào)用的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里面一個內(nèi)置對象,存在于任何函數(shù)[ function ]中,而callee則是arguments對象中的一個方法指向調(diào)用它的這個函數(shù)本體,這里就是說它就相當(dāng)于是f,調(diào)用callee等同于你又調(diào)用了一次f,其實callee多數(shù)情況是在匿名函數(shù)內(nèi)部使用,如:
(function(){alert(1);return arguments.callee(); })()關(guān)于return
這里的return就是返回整個函數(shù)本身·f通過上面的解釋你可以知道這里的arguments.callee就等同于f,如:
function f(){ alert(1); return arguments.callee;}f();↑↓等價于function f(){ alert(1); return function f(){ alert(1); };}f();回答4:
嚴(yán)格模式下報錯。 不推薦使用這個。
相關(guān)文章:
1. java中返回一個對象,和輸出對像的值,意義在哪兒2. javascript - Img.complete和img.onload判斷圖片加載完成有什么區(qū)別?3. css - chrome下a標(biāo)簽嵌套img 顯示會多個小箭頭?4. vim - docker中新的ubuntu12.04鏡像,運行vi提示,找不到命名.5. docker網(wǎng)絡(luò)端口映射,沒有方便點的操作方法么?6. mysql - 在不允許改動數(shù)據(jù)表的情況下,如何優(yōu)化以varchar格式存儲的時間的比較?7. mysql 為什么主鍵 id 和 pid 都市索引, id > 10 走索引 time > 10 不走索引?8. css3 - 純css實現(xiàn)點擊特效9. css - 網(wǎng)頁div區(qū)塊 像蘋果一樣可左右滑動 手機與電腦10. javascript - 有適合開發(fā)手機端Html5網(wǎng)頁小游戲的前端框架嗎?
