常規和嚴格物件相等有何不同?
在 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中文網其他相關文章!