JavaScript 中的邏輯運算子:超越布林結果
在JavaScript 中,邏輯運算子如'&&' (AND) 和' || ' (OR) 通常傳回布林結果,某些情況可能會導致傳回其他物件。
要理解原因,掌握短路求值的概念至關重要。 '&&' 和 '||'是短路運算符,這意味著一旦確定邏輯結果,它們就會停止計算。
在表達式 'X || 中先評估 Y'、'X'。如果“X”被確定為“true”,則表達式返回“X”而不進行進一步評估。這就是「短路」發揮作用的地方。另一方面,如果“X”為“假”,則計算“Y”,並且表達式返回“Y”。
類似地,「&&」透過傳回第一個「true」參數或最後一個「假」參數。
問題源自於 JavaScript 對真值和假值的處理。在 JavaScript 中,以下值被視為「false」:「false」、「0」、「-0」、「」、「null」、「undefined」、「NaN」和「document.all」。
因此,如果表達式被計算為“false”,現代實作將傳回實際計算的值,而不是像以前版本的 JavaScript 那樣傳回布林值“false”表達式。
此行為解釋了為什麼問題中提供的表達式會傳回物件而不是嚴格的布林值。如果定義了“obj.fn()”或“obj._”,它將傳回該表達式的結果,因為它們不屬於被視為“false”的值。
以上是JavaScript 邏輯運算子何時回傳物件而不是布林值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!