這只是一個JavaScript的東西。
void
是一個很奇怪的JavaScript操作:計算它的操作數,然後採取undefined
作爲其結果。所以,你的
() => void (x === 0 && this.setZero())
...是一個箭頭函數總是返回undefined
,與調用this.setZero()
(如果x === 0
)的可能的副作用。
你爲什麼把x === 0 & & this.setZero()in void?
這樣的功能總是回報undefined
,而不是返回false
(如果x === 0
是假的)或this.setZero()
結果(如果x === 0
是true
)。
這種模式的名稱是什麼?
我不認爲它有一個,具體而言。
您的() => x === 0 && this.setZero()
替代方案將返回false
或結果this.setZero()
。
我就注意到
() => void (x === 0 && this.setZero())
不正是
() => { x === 0 && this.setZero(); }
呢,因爲除非你使用return
一個詳細的箭頭功能不返回任何東西;另一種方法是:
() => { if (x === 0) this.setZero(); }
要解釋爲什麼它可能用在這裏,很可能是這個箭頭功能在承諾繼續使用,開發人員專門值不一定要在回報'FALSE'或'this.setZero()'的結果,但只要承諾/然後就可以完成任何事情。 'void'是實現這個結果的一個非常緊湊的方法。 – cdhowie
@cdhowie:嘿,我剛剛添加(但不是承諾位)。請注意,在這種情況下,'void'不像一個詳細的箭頭那麼緊湊。 –
雖然它很小巧,但顯然更令人困惑。混淆的代碼導致錯誤和維護問題。最好是冗長的,讓縮小器做他們的事情。 –