那么存不存在一種完全不需要這種給予準(zhǔn)確函數(shù)名(函數(shù)引用變量名)的方式呢?
arguments.callee
我們知道在任何一個 function
內(nèi)部,都可以訪問到一個叫做 arguments
的變量。
(function(){console.dir(arguments)})(1,2)
打印出這個
arguments
變量的細(xì)節(jié),可以看出他是 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ù)")。
哈哈,很明顯這就是我們想要的。接下來就是:
(