JavaScript 中的邏輯運算子:了解非布林結果
與總是傳回數值的數學運算子不同,邏輯運算子(&&&&&&&和| JavaScript 中的|) 有時可以傳回物件而不是布林值。這可能是違反直覺的,尤其是在嘗試使用它們進行條件檢查時。
為什麼回傳物件
||和&& 運算子是邏輯短路運算符,這表示它們從左到右評估其運算元並傳回第一個完全確定的邏輯值。在 JavaScript 中,該值可以是 true 或 false,但它也可以是物件。
理解條件邏輯
表達式 X || 中首先評估 Y、X 並將其解釋為布林值。如果 X 為 true,則立即傳回,且不計算 Y。這是因為表達式已被確定為 true。
如果 X 為 false,則計算 Y 並傳回其布林值。
類似地,如果第一個參數 && 停止計算是 false。
「False」的技巧
第一點之所以會出現混淆,是因為當表達式被評估為「true」時,表達式本身就會被返回。這就是為什麼您可能會看到從邏輯表達式傳回實際值的原因。
空的技巧
第二個混淆點源自於 JavaScript 在不同版本中的行為。最初,它會對「false」表達式傳回 false,但從版本 1.2 開始,它會傳回表達式的實際值。
範例
說明:
var _ = (obj.fn && obj.fn()) || obj._ || (obj._ = {}); // Returns obj.fn() if defined, otherwise obj._ var _ = obj && obj._; // Returns obj._ if obj is true, otherwise obj
以上是為什麼 JavaScript 邏輯運算子有時會傳回物件而不是布林值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!