Égalité des tableaux et des objets en JavaScript

Dec 13 2022
En JavaScript, le double signe égal (==) et le triple signe égal (===) ou l'égalité stricte sont les deux opérateurs utilisés pour vérifier l'égalité de deux valeurs. Nous nous souvenons que le double signe égal contrairement au triple signe égal vérifie uniquement l'égalité des deux valeurs mais ne se soucie pas de savoir si elles sont du même type.

En JavaScript, le double signe égal (==) et le triple signe égal (===) ou l'égalité stricte sont les deux opérateurs utilisés pour vérifier l'égalité de deux valeurs. Nous nous souvenons que le double signe égal contrairement au triple signe égal vérifie uniquement l'égalité des deux valeurs mais ne se soucie pas de savoir si elles sont du même type. Par exemple:

// 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

Mais lorsque nous appliquons l'un ou l'autre de ces signes sur un tableau ou un objet, le comportement devient étrange. Par exemple:

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

La raison en est que les objets et les variables de tableaux ne stockent pas directement les valeurs particulières qui leur sont affectées, mais stockent plutôt une référence à l'emplacement d'origine en mémoire où le tableau ou l'objet est stocké. Jetez un oeil au schéma ci-dessous pour une bonne compréhension:

Comme nous pouvons le voir sur l'image ci-dessus, la variable "obj1" stocke la référence de la mémoire où l'objet réel est stocké, qui dans ce cas est 12456754 (j'ai inventé ce nombre à des fins d'explication) pareil avec la variable "obj2" qui stocke également la référence de la mémoire où l'objet réel est stocké en mémoire qui est 98537562. On peut voir que la valeur obj1 stores(12456754) est différente de la valeur obj2 stores(98537562). Il peut être écrit correctement comme ceci:

const obj1 = 12456754;
const obj2 = 98537562;

La seule façon dont deux variables d'objets ou de tableaux peuvent être identiques est uniquement si nous égalons ou attribuons une nouvelle variable (obj2) à une variable de tableau ou d'objet (obj1). Par exemple:

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 : Je n'ai utilisé que des objets dans mes exemples, mais la même raison et la même explication s'appliquent toujours aux tableaux.