物件相等的困惑
儘管具有相同的特徵,兩個看似相同的物件在 JavaScript 中仍然不相等。這個現象讓很多人感到困惑,給出下面的程式碼片段:
var a = {}; var b = {}; console.log(a==b); //returns false console.log(a===b); //returns false
理解相等運算子
常規(==)和嚴格(===)相等運算子結果之間的差異在於型別轉換。常規相等執行隱式類型轉換,而嚴格相等則不執行。但是,在這種情況下,兩個變數都是對象,因此類型轉換無關緊要。
Object Identity
只有在比較相同的物件參考時,物件比較才計算為 true,無論使用什麼等式運算子。換句話說,a == a、a == b(如果 b 是 a 的別名),但 a != c(如果 c 是不同的物件)。
意義
這種獨特的行為對物件導向程式設計有影響。具有相同屬性但不同引用的兩個物件被認為是不相等的,即使它們代表相同的現實世界實體。
例如,在資料庫中,兩個物件代表具有相同姓名、地址和資訊的同一個人。電話號碼不會被視為相等,因為它們具有不同的物件參考。這可能會導致在執行物件比較時出現混亂的結果。
解決方案
如果需要比較兩個物件的屬性,請考慮使用第三方函式庫或實作自訂比較函數,單獨檢查每個屬性。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3