Równość tablic i obiektów w JavaScript
W JavaScript podwójny znak równości (==) i potrójny znak równości (===) lub ścisła równość to dwa operatory używane do sprawdzania równości dwóch wartości. Pamiętamy, że podwójny znak równości, w przeciwieństwie do potrójnego znaku równości, sprawdza tylko równość dwóch wartości, ale nie dba o to, czy są one tego samego typu. Na przykład:
// 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
Ale kiedy zastosujemy którykolwiek z tych znaków na tablicy lub obiekcie, zachowanie staje się dziwne. Na przykład:
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
Powodem jest to, że zmienne obiektów i tablic nie przechowują bezpośrednio przypisanych im wartości, ale raczej przechowują odniesienie do oryginalnego miejsca w pamięci, w którym przechowywana jest tablica lub obiekt. Spójrz na poniższy schemat dla właściwego zrozumienia:
Jak widać na powyższym obrazku, zmienna „obj1” przechowuje odniesienie do pamięci, w której przechowywany jest rzeczywisty obiekt, którym w tym przypadku jest 12456754 (wymyśliłem tę liczbę w celu wyjaśnienia) tak samo jak zmienna „obj2” która przechowuje również odniesienie do pamięci, w której przechowywany jest rzeczywisty obiekt, czyli 98537562. Widzimy, że wartość przechowywana w obj1 (12456754) różni się od wartości przechowywanej w obj2 (98537562). Prawidłowo można to zapisać tak:
const obj1 = 12456754;
const obj2 = 98537562;
Jedynym sposobem, w jaki dwa obiekty lub zmienne tablicowe mogą być takie same, jest tylko wtedy, gdy zrównamy lub przypiszemy nową zmienną (obj2) do tablicy lub zmiennej obiektowej (obj1). Na przykład:
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
Uwaga: w moich przykładach użyłem tylko obiektów, ale ten sam powód i wyjaśnienie nadal dotyczy tablic.

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































