首頁  >  文章  >  web前端  >  為什麼 JavaScript 邏輯運算子有時會傳回物件而不是布林值?

為什麼 JavaScript 邏輯運算子有時會傳回物件而不是布林值?

Linda Hamilton
Linda Hamilton原創
2024-11-18 02:42:02972瀏覽

Why Do JavaScript Logical Operators Sometimes Return Objects Instead of Booleans?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn