首頁 > web前端 > js教程 > JavaScript 邏輯運算子如何傳回物件?

JavaScript 邏輯運算子如何傳回物件?

Mary-Kate Olsen
發布: 2024-11-26 15:11:09
原創
271 人瀏覽過

How Can JavaScript Logical Operators Return Objects?

理解JavaScript 中的邏輯運算子:為什麼它們可以傳回物件

在JavaScript 中,邏輯運算子如&&(與)和)和算符|| (or) 通常期望計算為布林值(true 或false)。但是,在某些情況下,它們也可以傳回物件。這種令人驚訝的行為最初可能會讓您感到困惑。

為了深入研究這個現象,讓我們分析以下程式碼片段:

var _ = (obj.fn && obj.fn()) || obj._ || (obj._ = {});

var _ = obj && obj._;
登入後複製

在第一個範例中,最初評估 obj.fn。如果已定義,則傳回表達式 obj.fn() 的結果。否則,將計算表達式 obj._,或者如果 obj.fn 和 obj._ 都不存在,則建立一個新物件。

類似地,在第二個範例中,先計算 obj。如果 obj 存在(計算結果為 true),則結果是 obj._ 的值。但是,如果 obj 不存在(計算結果為 false),則傳回原始 obj 值本身。

揭示邏輯短路行為

此行為源自於從 && 和 || 的邏輯短路性質來看。換句話說,這些運算子試圖盡快返回一個“邏輯值”,避免在結果已經明確的情況下進行不必要的計算。

在 || 的情況下,如果左側表達式的計算結果為true,它會立即傳回,且右側表達式根本不會被求值。相反,如果左側表達式計算結果為 false,則計算右側表達式並傳回。

JavaScript 中的錯誤和值回傳

另一個方面影響這種行為的是 JavaScript 中處理假值的方式。 JavaScript 中的假值包括 false、0、NaN、空字串、null 和 undefined。

在 JavaScript 1.2 版本之前,||當表達式計算結果為 false 時傳回 false。然而,從版本 1.2 開始,它會傳回表達式的實際值。這表示如果左側表達式為 false,則會傳回右側表達式的值。

同樣,對於 &&,如果左側表達式的計算結果為 true,則右側表達式的值被求值,並傳回其值。但是,如果左側表達式的計算結果為 false,則在 JS 1.0 和 1.1 中傳回 false,而從 JS 1.2 開始傳回左側表達式的值。

結論

理解邏輯短路行為和 JavaScript 對假值的處理對於理解邏輯運算符的回傳值有時令人驚訝。透過認識到這些運算符優先考慮效率,並且錯誤在 JavaScript 中可能有不同的解釋,您可以自信地駕馭這些運算符的複雜性。

以上是JavaScript 邏輯運算子如何傳回物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板