Igualdade de arrays e objetos em JavaScript

Dec 13 2022
Em JavaScript, o sinal de igual duplo (==) e o sinal de igual triplo (===) ou igualdade estrita são os dois operadores usados ​​na verificação da igualdade de dois valores. Lembramos que o sinal de igual duplo, ao contrário do sinal de igual triplo, verifica apenas a igualdade dos dois valores, mas não se importa se eles são do mesmo tipo.

Em JavaScript, o sinal de igual duplo (==) e o sinal de igual triplo (===) ou igualdade estrita são os dois operadores usados ​​na verificação da igualdade de dois valores. Lembramos que o sinal de igual duplo, ao contrário do sinal de igual triplo, verifica apenas a igualdade dos dois valores, mas não se importa se eles são do mesmo tipo. Por exemplo:

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

Mas quando aplicamos qualquer um desses sinais em uma matriz ou objeto, o comportamento se torna estranho. Por exemplo:

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

A razão é porque as variáveis ​​de objetos e matrizes não armazenam os valores específicos atribuídos a eles diretamente, mas armazenam uma referência ao local original na memória onde a matriz ou objeto é armazenado. Observe o esquema abaixo para melhor compreensão:

Como podemos ver na figura acima, a variável “obj1” armazena a referência da memória onde o objeto real está armazenado, que neste caso é 12456754 (eu inventei esse número para fins de explicação) igual à variável “obj2” que também armazena a referência da memória onde o objeto real está armazenado na memória que é 98537562. Podemos ver que o valor obj1 stores(12456754) é diferente do valor obj2 stores(98537562). Pode ser escrito corretamente assim:

const obj1 = 12456754;
const obj2 = 98537562;

A única maneira de dois objetos ou variáveis ​​de matrizes poderem ser iguais é apenas se igualarmos ou atribuirmos uma nova variável (obj2) a uma matriz ou variável de objeto (obj1). Por exemplo:

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: Usei apenas objetos em meus exemplos, mas o mesmo motivo e explicação ainda se aplica a arrays.