」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼兩個相同的 JavaScript 物件不相等?

為什麼兩個相同的 JavaScript 物件不相等?

發佈於2024-12-21
瀏覽:854

Why Are Two Identical JavaScript Objects Unequal?

物件相等的困惑

儘管具有相同的特徵,兩個看似相同的物件在 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 是不同的物件)。

意義

這種獨特的行為對物件導向程式設計有影響。具有相同屬性但不同引用的兩個物件被認為是不相等的,即使它們代表相同的現實世界實體。

例如,在資料庫中,兩個物件代表具有相同姓名、地址和資訊的同一個人。電話號碼不會被視為相等,因為它們具有不同的物件參考。這可能會導致在執行物件比較時出現混亂的結果。

解決方案

如果需要比較兩個物件的屬性,請考慮使用第三方函式庫或實作自訂比較函數,單獨檢查每個屬性。

最新教學 更多>
  • Flatpack 與 OpenCSV:哪種 Java API 最適合我的 CSV 需求?
    Flatpack 與 OpenCSV:哪種 Java API 最適合我的 CSV 需求?
    Java 的 CSV API 選項在 Java 中處理 CSV 檔案時,選擇合適的 API 對於高效資料操作至關重要。本文探討了兩種廣泛使用的用於讀取、轉換和寫入 CSV 檔案的 Java API:Flatpack 和 OpenCSV。 FlatpackFlatpack 是一個開源 Java 庫,它...
    程式設計 發佈於2024-12-21
  • 如何確定MySQL資料庫的大小?
    如何確定MySQL資料庫的大小?
    確定 MySQL 資料庫大小使用 MySQL 時,通常需要確定特定資料庫的大小。當需要調整名為「v3」的資料庫的大小時,就會出現這樣一種情況。 檢索資料庫大小的查詢可以執行下列SQL 查詢來擷取大小資料庫的大小(以兆位元組為單位):SELECT table_schema "DB Name&...
    程式設計 發佈於2024-12-21
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSocke...
    程式設計 發佈於2024-12-21
  • MySQL 可以使用表格變數嗎?
    MySQL 可以使用表格變數嗎?
    MySQL 中的表格變數:仔細觀察在MySQL 領域,表變數是其他資料庫系統中的主要功能,可能似乎是一個難以捉摸的概念。問題出現了:是否可以在 MySQL 中建立表格變數? 雖然傳統的表變數在 MySQL 中並不現實,但有一種解決方法涉及利用臨時表。臨時表提供了一種實用的替代方法,用於在流程中儲存表...
    程式設計 發佈於2024-12-21
  • 如何在 C++ 中序列化和反序列化具有複雜資料成員的類別?
    如何在 C++ 中序列化和反序列化具有複雜資料成員的類別?
    如何在C 中序列化和反序列化具有複雜資料成員的類別簡介 序列化涉及將物件的狀態轉換為位元組流,該位元組流可以儲存並稍後重構回具有相同狀態的物件。本文提供了有關用 C 語言對具有自訂資料類型成員的類別進行序列化和反序列化的指導,並提供了最佳速度、可移植性和記憶體效率的實現建議。 定義序列化介面正確的序...
    程式設計 發佈於2024-12-21
  • 如何在 Python 中將秒轉換為小時、分鐘和秒?
    如何在 Python 中將秒轉換為小時、分鐘和秒?
    在Python 處理時間轉換:將秒轉換為小時、分鐘和秒的指南在程式設計中,通常需要處理各種格式的時間值。在處理秒數時,您可能需要將它們轉換為更具可讀性和組織性的格式,例如小時、分鐘和秒。 Python 為這個轉換提供了一個簡單且有效率的解決方案。 將秒轉換為小時、分鐘和秒將秒轉換為“小時:分鐘:秒”...
    程式設計 發佈於2024-12-21
  • 為什麼我的 PHP JSON POST 解碼失敗,如何修復?
    為什麼我的 PHP JSON POST 解碼失敗,如何修復?
    使用 PHP 解碼 JSON POST使用 PHP 解碼 JSON POST嘗試在支付介面網站上接收 JSON POST 時,解碼資料時出現意外結果。列印 $_POST 的內容時,會傳回一個空數組,表示缺少或無法解析的有效負載。 為了解決此問題,考慮了以下方法:迭代 $用於顯示鍵值對的 _POST ...
    程式設計 發佈於2024-12-21
  • 如何在 Python Unicode 中處理代理程式對?
    如何在 Python Unicode 中處理代理程式對?
    如何在Python Unicode 中處理代理對在Python 中,代理程式對用於表示基本多語言平面(BMP) 之外的Unicode 字元)。這些對由兩個代理項代碼點組成,用於對單一 Unicode 字元進行編碼。 使用包含代理程式對的 Python unicode 字串時,您可能會遇到與代理程式編...
    程式設計 發佈於2024-12-21
  • 如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    在 PHP 中組合關聯數組在 PHP 中,將兩個關聯數組組合成一個數組是常見任務。考慮以下請求:問題描述:提供的代碼定義了兩個關聯數組,$array1 和 $array2。目標是建立一個新陣列 $array3,它合併兩個陣列中的所有鍵值對。 此外,提供的陣列具有唯一的 ID,而名稱可能重疊。要求是建...
    程式設計 發佈於2024-12-21
  • 如何調整 :hover 動畫以實現行動裝置互動?
    如何調整 :hover 動畫以實現行動裝置互動?
    調整:hover 動畫以實現移動設備交互您遇到了以下問題:展開面板的:hover CSS 動畫不會在移動設備上觸發設備由於沒有滑鼠懸停。為了解決這個問題,您的目標是在頁面寬度低於 700 像素時將觸發器切換為「點擊」或「觸控」。 要實現此目的,您可以結合使用 :hover 和 :active 選擇器...
    程式設計 發佈於2024-12-21
  • 如何使用 PHP 有效率地將 MySQL 查詢結果匯出到 CSV?
    如何使用 PHP 有效率地將 MySQL 查詢結果匯出到 CSV?
    在PHP 中將MySQL 查詢轉換為CSV在PHP 中,可以有效率地實作將MySQL 查詢資料匯出到CSV,而無需使用臨時文件文件。以下是完成此任務的兩種有效方法:使用MySQL 的SELECT ... INTO OUTFILE:該查詢直接將結果輸出到CSV 檔案中: SELECT * INTO O...
    程式設計 發佈於2024-12-21
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-12-21
  • 如何解決 Go 中的「變數未使用」錯誤?
    如何解決 Go 中的「變數未使用」錯誤?
    Go 中變數未使用錯誤在給定的Go 程式碼中,發生編譯錯誤,因為宣告了變數「err」但仍然存在在“main”函數中未使用。這是 Go 中的一個常見問題,因為編譯器強制使用變數以避免程式碼中未使用的變數。 程式碼片段在“var”區塊中宣告了一個類型為 error 的變數“err”,但它是未在“main...
    程式設計 發佈於2024-12-21
  • 如何從 MySQL 有效率地檢索總計數和分頁結果?
    如何從 MySQL 有效率地檢索總計數和分頁結果?
    MySQL 分頁:高效檢索結果和總計數在MySQL 中實現分頁時,通常的做法是執行兩個單獨的查詢:一到取得結果總數,另一個限制取得的記錄。這種稱為雙重查詢的方法對於大型資料集可能效率低。 然而,問題是是否可以在單一查詢中檢索總結果計數並限制結果。雖然沒有直接的方法來實現此目的,但有兩種替代方法可用:...
    程式設計 發佈於2024-12-21
  • 如何透過 PHP 有效地使用 MySQL 中的預先準備語句?
    如何透過 PHP 有效地使用 MySQL 中的預先準備語句?
    MySQL 中的準備語句入門準備語句是編寫安全且有效率的 SQL 查詢的重要工具。在本文中,我們將探討如何在 PHP 中的 MySQLi 擴充 mysqli 中使用預先準備語句。 語法錯誤:非物件執行您遇到的錯誤、「致命錯誤:在非物件上呼叫成員函數execute()」通常表示$stmt 變量未正確初...
    程式設計 發佈於2024-12-21

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3