首頁 >web前端 >js教程 >JavaScript 物件相等性:`==` 和 `===` 有什麼不同?

JavaScript 物件相等性:`==` 和 `===` 有什麼不同?

Patricia Arquette
Patricia Arquette原創
2024-12-08 07:34:11450瀏覽

JavaScript Object Equality: What's the Difference Between `==` and `===`?

常規和嚴格物件相等有何不同?

在 JavaScript 中,用常規 (==) 或嚴格 (= ==) 相等運算子可能不會產生預期的結果。與原始資料類型不同,物件是透過其記憶體位址引用的。因此,僅根據它們的值進行比較是不夠的。

請考慮以下程式碼:

var a = {};
var b = {};

console.log(a == b); // false
console.log(a === b); // false

雖然 a 和 b 都是空對象,但它們的引用指向不同的記憶體位址。因此,常規和嚴格相等評估都會傳回 false。

為什麼這很重要?

理解這種細微差別對於確保準確的物件比較至關重要。僅當物件引用完全相同的記憶體位址時,才應將其視為相等。將物件指派給新變數會建立一個新引用,即使內容相同。

例如,假設我們有三個物件:a、b 和 c。

a = {}
b = a
c = {}

在本例中,a == a、a == b 和 a != c。這是因為 a 和 b 引用相同的記憶體位址,而 c 有自己唯一的引用。

結論

比較物件時,必須記住物件相等基於記憶體引用,而不是它們的值。常規和嚴格相等運算子對於物件的行為相同,並且僅當被比較的物件引用相同的記憶體位址時才傳回 true。

以上是JavaScript 物件相等性:`==` 和 `===` 有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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