Gleichheit von Arrays und Objekten in JavaScript

Dec 13 2022
In JavaScript sind das doppelte Gleichheitszeichen (==) und das dreifache Gleichheitszeichen (===) oder strikte Gleichheit die beiden Operatoren, die verwendet werden, um die Gleichheit zweier Werte zu prüfen. Wir erinnern uns, dass das doppelte Gleichheitszeichen im Gegensatz zum dreifachen Gleichheitszeichen nur die Gleichheit der beiden Werte prüft, sich aber nicht darum kümmert, ob sie vom gleichen Typ sind.

In JavaScript sind das doppelte Gleichheitszeichen (==) und das dreifache Gleichheitszeichen (===) oder strikte Gleichheit die beiden Operatoren, die verwendet werden, um die Gleichheit zweier Werte zu prüfen. Wir erinnern uns, dass das doppelte Gleichheitszeichen im Gegensatz zum dreifachen Gleichheitszeichen nur die Gleichheit der beiden Werte prüft, sich aber nicht darum kümmert, ob sie vom gleichen Typ sind. Zum Beispiel:

// double equality
const num = 2
const num2 = '2'
console.log(2==2)

// output will be true

// triple equality
const num = 2
const num2 = '2'
console.log(2===2)

// output will be false

Aber wenn wir eines dieser Zeichen auf ein Array oder Objekt anwenden, wird das Verhalten seltsam. Zum Beispiel:

const obj1={
 name: 'kenneth',
country:'Nigeria',
age:26
}
const obj2={
 name: 'kenneth',
country:'Nigeria',
age:26
}
console.log(obj1 == obj2)
//this outputs false
console.log(obj1 === obj2)
// this still outputs false

Der Grund dafür ist, dass Objekt- und Array-Variablen die ihnen zugewiesenen Werte nicht direkt speichern, sondern einen Verweis auf den ursprünglichen Ort im Speicher speichern, an dem das Array oder Objekt gespeichert ist. Werfen Sie einen Blick auf das folgende Diagramm, um es richtig zu verstehen:

Wie wir auf dem obigen Bild sehen können, speichert die Variable „obj1“ die Referenz des Speichers, in dem das reale Objekt gespeichert ist, in diesem Fall 12456754 (ich habe diese Nummer zu Erklärungszwecken erfunden), genauso wie die Variable „obj2“. der auch die Referenz des Speichers speichert, in dem das reale Objekt gespeichert ist, nämlich 98537562. Wir können sehen, dass sich der Wert obj1 speichert (12456754) von dem Wert obj2 speichert (98537562) unterscheidet. Es kann so richtig geschrieben werden:

const obj1 = 12456754;
const obj2 = 98537562;

Zwei Objekte oder Array-Variablen können nur dann gleich sein, wenn wir einer Array- oder Objektvariablen (obj1) gleich sind oder eine neue Variable (obj2) zuweisen. Zum Beispiel:

const obj1={
 name: 'kenneth',
country:'Nigeria',
age:26
}
const obj2 = obj1;

console.log(obj1 == obj2)
// this will output true
console.log(obj1 === obj2)
// this will still be true

NB: Ich habe in meinen Beispielen nur Objekte verwendet, aber der gleiche Grund und die gleiche Erklärung gelten immer noch für Arrays.