„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum sind zwei identische JavaScript-Objekte ungleich?

Warum sind zwei identische JavaScript-Objekte ungleich?

Veröffentlicht am 21.12.2024
Durchsuche:140

Why Are Two Identical JavaScript Objects Unequal?

Die Verwirrung der Objektgleichheit

Obwohl sie identische Eigenschaften aufweisen, bleiben zwei scheinbar identische Objekte in JavaScript ungleich. Dieses Phänomen hat angesichts des folgenden Codeausschnitts viele verwirrt:

var a = {};
var b = {};

console.log(a==b); //returns false
console.log(a===b); //returns false

Gleichheitsoperatoren verstehen

Die Ungleichheit zwischen den Ergebnissen der regulären (==) und strengen (===) Gleichheitsoperatoren liegt in der Typkonvertierung . Bei regulärer Gleichheit wird eine implizite Typkonvertierung durchgeführt, bei strikter Gleichheit jedoch nicht. In diesem Fall sind jedoch beide Variablen Objekte, sodass die Typkonvertierung irrelevant ist.

Objektidentität

Objektvergleiche werden nur dann als wahr ausgewertet, wenn dieselbe Objektreferenz verglichen wird. unabhängig vom verwendeten Gleichheitsoperator. Mit anderen Worten, a == a, a == b (wenn b ein Alias ​​von a ist), aber a != c (wenn c ein anderes Objekt ist).

Implikationen

Dieses einzigartige Verhalten hat Auswirkungen auf die objektorientierte Programmierung. Zwei Objekte mit identischen Eigenschaften, aber unterschiedlichen Referenzen gelten als ungleich, auch wenn sie dieselbe reale Entität darstellen.

In einer Datenbank beispielsweise repräsentieren zwei Objekte dieselbe Person mit demselben Namen, derselben Adresse usw Telefonnummern würden nicht als gleich angesehen, da sie unterschiedliche Objektreferenzen haben. Dies kann zu verwirrenden Ergebnissen beim Durchführen von Objektvergleichen führen.

Lösungen

Wenn ein Vergleich der Eigenschaften zweier Objekte erforderlich ist, sollten Sie die Verwendung einer Bibliothek eines Drittanbieters in Betracht ziehen oder eine implementieren benutzerdefinierte Vergleichsfunktion, die jede Eigenschaft einzeln prüft.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3