3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊
使用命名函數(shù)表達(dá)式而不是匿名函數(shù)表達(dá)式至少具有三個(gè)優(yōu)點(diǎn)。
由于函數(shù)名稱(chēng)顯示在調(diào)用層次結(jié)構(gòu)中,因此使調(diào)試更加容易。
在函數(shù)的內(nèi)部范圍中可以訪問(wèn)函數(shù)名稱(chēng),因此可以將其用于遞歸
函數(shù)名稱(chēng)本身就像函數(shù)執(zhí)行的自我文檔一樣,而不是閱讀代碼。

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
使用那些“命名的匿名函數(shù)”不會(huì)改變行為,但是會(huì)在堆棧跟蹤中顯示函數(shù)名,這非常有用。同樣,該函數(shù)也可以在自身內(nèi)部以這種方式調(diào)用。

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
我舉一個(gè)例子
情況1:
var obj = {count: 0, counter: ()=> {this.count+=1;}}
如果執(zhí)行console.log(obj.count),將得到0
情況2:
var obj = {count: 0, counter (){this.count+=1;}}
在第二種情況下,如果您執(zhí)行console.log(obj.count)值將為1。
希望您現(xiàn)在明白了。Lamda表達(dá)式無(wú)法使用此對(duì)象的引用訪問(wèn)值。它只能訪問(wèn)具有全局引用的變量。
在情況1中,如果要使其與lamba一起使用,則必須使用obj.count + = 1,并且名稱(chēng)具有引用。
與其余的JavaScript函數(shù)實(shí)現(xiàn)保持不變沒(méi)有太大區(qū)別。
添加回答
舉報(bào)