我正在閱讀John Resig編寫的名爲「JavaScript忍者的祕密」的精彩書籍& Bear Bibeaoult。在第3.2章中,它舉了一個例子。爲什麼JavaScript中的匿名函數有名字?
var canFly = function(){ return true; };
然後它說:
創建匿名函數並將其分配給名爲canFly的全局變量。由於JavaScript的功能性,函數可以通過該引用作爲canFly()來調用。在這方面,它幾乎在功能上等同於聲明名爲「canFly」的命名函數,但不完全相同。 一個主要區別是函數的名稱屬性是「」,而不是「canFly」。
但是,當我嘗試執行對Chrome的開發者工具的例子,檢查canFly
功能的name
屬性,它返回值「canFly」,而不是一個空字符串。
canFly.name;
// > "canFly"
分配給變量的匿名函數在前幾天沒有名稱嗎?如果是這樣,有什麼變化?還是作者犯了一個錯誤?
我不記得我在哪裏讀過它,但我記得在新版本的Node/V8中,即使匿名函數被分配給一個變量時,也會得到變量名。當我找到一個鏈接時會發佈一個答案。 – Aron
[*推斷的函數名稱*:變量和方法可以從其語法位置推斷匿名函數的名稱(ECMAScript 2015中新增)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name#Inferred_function_names) –
我們走了。謝謝@亞歷克斯。 – Aron