存不存在一種完全不需要這種給予準(zhǔn)確函數(shù)名(函數(shù)引用變量名)而調(diào)用其的方式呢?
我們知道在任何一個function內(nèi)部,都可以訪問到一個叫做arguments的變量。
打印出這個arguments變量的細(xì)節(jié):
(function(){console.dir(arguments)})(1,2)

JS_function_arguments_callee.png
可以看出他是Arguments的一個實(shí)例,而且從數(shù)據(jù)結(jié)構(gòu)上來講,他是一個類數(shù)組。他除了類數(shù)組的元素成員和length屬性外,還有一個callee方法。 那么這個callee方法是做什么的呢?我們來看下MDN:
callee 是 arguments 對象的屬性。在該函數(shù)的函數(shù)體內(nèi),它可以指向當(dāng)前正在執(zhí)行的函數(shù)。當(dāng)函數(shù)是匿名函數(shù)時,這是很有用的, 比如沒有名字的函數(shù)表達(dá)式 (也被叫做”匿名函數(shù)”)。
//匿名函數(shù)的遞歸調(diào)用
(function() {
alert("?");
var loop = setTimeout(arguments.callee,1000);
if (loop >= 10) {clearTimeout(loop);}
})();