3 回答

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
變量和方法可以從語(yǔ)法位置推斷匿名函數(shù)的名稱(ECMAScript 2015 中的新增功能)。
"sayBye"
Chrome 和 Firefox在打印時(shí)都會(huì)給出bye.name
.
bye.toString()
根據(jù)個(gè)人實(shí)驗(yàn),Chrome 控制臺(tái)會(huì)在詢問 時(shí)顯示bye
,而 Firefox 會(huì)顯示他們的自定義輸出,其中顯示推斷的函數(shù)名稱(這確實(shí)有意義,因?yàn)橹烂Q通常有助于調(diào)試)。

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊
函數(shù)是對(duì)象,因此賦值 x = y 不會(huì)被復(fù)制。我嘗試了這個(gè) Nodejs 我得到
Bye
[Function: sayBye]
如果你沒有命名函數(shù),JS 會(huì)自動(dòng)為其添加名稱。在 ES6 中,您可以使用 myFunction.name檢查函數(shù)的名稱,即“name”是函數(shù)對(duì)象的屬性。重要的是,這是只讀屬性。好的做法是使用constwhile letusing 函數(shù)表達(dá)式。另外,如果可能的話,嘗試命名函數(shù),這樣在調(diào)用堆棧上調(diào)試就很容易

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊
您對(duì)函數(shù)的名稱感到困惑。
記憶中的事情發(fā)生的方式和你想象的完全一樣。
但是,該函數(shù)沒有顯式名稱,因此瀏覽器為該函數(shù)提供了一個(gè)隱式名稱,即首先分配給它的變量或?qū)ο髮傩缘拿Q,在本例中為sayBye
.
然后,它被分配給另一個(gè)變量,但名稱不變。
如果你給它一個(gè)明確的名稱,你可以看到這一點(diǎn):
//? Explicit name ----vvvv
let sayBye = function myFn() {
? ? console.log(`Bye`);
}
let bye = sayBye;? ?
sayBye = null;? ? // X
bye();? ? ? ? ? ? // Y
console.log(bye);
添加回答
舉報(bào)