JavaScript 中三元運算子優先順序疑難排解
JavaScript 的三元運算子是條件賦值的強大工具,但理解其優先順序可能很棘手。本文重點討論三元運算子與=結合的特定場景。
理解問題
考慮以下程式碼片段:
h.className += h.className ? ' error' : 'error'
乍一看,程式碼似乎根據三元條件將h.className 的當前值與“error”或“error”連接起來。然而,這種解釋可能會導致錯誤。
正確的解釋
問題在於運算子的優先權。在 JavaScript 中,運算子的優先權高於三元運算子。這表示上面的表達式計算如下:
h.className = h.className + (h.className ? ' error' : 'error')
解決方案
為了確保三元運算子正確應用,程式碼應寫成:
h.className = h.className + (h.className ? ' error' : 'error')
這確保了在與h.className 連接之前對三元運算子進行求值。
其他注意事項
需要注意的是h.className = ' error' 也是有效的,但它不如更新後的程式碼精確。 = 運算子僅適用於 h.className,而更新後的程式碼明確地將三元條件結果與 h.className 連接起來。
結論
理解運算子優先順序對於編寫正確的 JavaScript 程式碼。透過闡明三元運算子和 = 運算子的優先權規則,本文為在 JavaScript 中使用條件賦值時遇到的常見挑戰提供了解決方案。
以上是為什麼 `${\'h.className = h.className ? \' error\' : \'error\'}` 在 JavaScript 中無法如預期運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!