為什麼兩個相同的物件彼此不同?
JavaScript 中的相等運算子 (==) 和嚴格相等運算子(===) 用於比較值。但是,在比較物件時,這些運算符的行為與您預期的不同。
考慮以下程式碼:
var a = {}; var b = {}; console.log(a == b); // returns false console.log(a === b); // returns false
此程式碼對兩個表達式都記錄 false,即使 a 和 b 都是空物體。這是為什麼?
常規 (==) 和嚴格 (===) 相等之間的主要區別在於嚴格相等運算符禁用類型轉換。由於 a 和 b 都是對象,因此在這種情況下,相等運算子的類型並不重要。
無論使用何種相等運算符,只有在比較 相同的物件時,物件比較才會計算為 true 。換句話說,給定var a = {}, b = a, c = {};,a == a, a == b,但是a != c.
兩個不同的物件(即使它們有零個或完全相同的屬性)永遠不會相等。要比較兩個物件屬性的相等性,您可以使用 Object.is() 方法或提供的答案中概述的方法。
以上是為什麼兩個空 JavaScript 物件比較不相等?的詳細內容。更多資訊請關注PHP中文網其他相關文章!