物件相等的困惑
儘管具有相同的特徵,兩個看似相同的物件在 JavaScript 中仍然不相等。這個現象讓許多人感到困惑,參考下面的程式碼片段:
var a = {}; var b = {}; console.log(a==b); //returns false console.log(a===b); //returns false
理解相等運算子
常規(==)和嚴格的結果之間的差異(===) 相等運算子在於型別轉換。常規相等執行隱式類型轉換,而嚴格相等則不執行。但是,在這種情況下,兩個變數都是對象,因此類型轉換無關緊要。
物件識別
只有在比較相同的物件引用時,物件比較才會計算為 true,無論使用什麼等式運算子。換句話說,a == a、a == b(如果 b 是 a 的別名),但 a != c(如果 c 是不同的物件)。
意義
這種獨特的行為對物件導向程式設計有影響。具有相同屬性但不同引用的兩個物件被認為是不相等的,即使它們代表相同的現實世界實體。
例如,在資料庫中,兩個物件代表具有相同姓名、地址和資訊的同一個人。電話號碼不會被視為相等,因為它們具有不同的物件參考。這可能會導致在執行物件比較時出現混亂的結果。
解決方案
如果需要比較兩個物件的屬性,請考慮使用第三方函式庫或實作自訂比較函數,單獨檢查每個屬性。
以上是為什麼兩個相同的 JavaScript 物件不相等?的詳細內容。更多資訊請關注PHP中文網其他相關文章!