21. Jakie są różnice między =, == i ===?

Operator = jest operatorem przypisania - służy do nadania wartości zmiennej.

const x = "a"; let y = "b";

Operatory == i === służą do porównywania ze sobą dwóch wartości.

== może przynosić nieoczekiwane rezultaty, gdyż dokonuje konwersji typów przed porównaniem.

10 == '10'; // true, because '10' (string) is coerced to a number 0 == false; // true, because false (boolean) is coerced to 0 1 == true // true, because true (boolean) is coerced to 1 "" == false // true, because "" (string) is coerced to false NaN == false // false

=== jest uważany za bezpieczniejszy operator, ponieważ NIE dokonuje konwersji przed porównaniem. Oznacza to, że poza porównaniem wartości, porównuje również jej typ.

10 === '10'; // false 0 == false; // false 1 == true // false "" == false // false NaN == false // false

Porównywanie obiektów

Porównywanie wartości prymitywnych jest proste. W przypadku obiektów sprawa wygląda nieco inaczej. W JavaScript funkcjonują referencje, czyli wirtualne sznurki łączące zmienną z jej zawartością.

Utworzony obiekt zajmuje pewne miejsce w pamięci urządzenia. Do jednego obiektu możliwe jest przypisanie dowolnej liczby referencji.

const obj = {}; const a = obj; const b = obj; const c = {}; a === b // true a === c // false b === c // false

Porównanie referencji skutkuje sprawdzeniem, czy obie wskazują na ten sam obiekt w pamięci.

Aby sprawdzić, czy obydwa obiekty są takie same, należy przeprowadzić porównanie głebokie (deep). Polega ono na sprawdzeniu, czy wszystkie wartości prymitywne składające się na dane obiekty odopowiadają sobie.

W przypadku, gdy porównywane obiekty zawierają dalsze zagnieźdżenia, warto rozważyć napisanie funkcji porównujacej wartości rekurencyjnie lub skorzystanie z instniejących bibliotek.

const obj1 = {a: {b: "ABC"}, d: 23}; const obj2 = {a: {b: "ABC"}, d: 23}; obj1.a.b === obj2.a.b && obj1.d === obj2.d // true

Wyczerpujący artykuł odnośnie porównywania głębokiego znajduje się tutaj.

devFlipCards 2024

Akceptujesz cookies?

Cookies to niewielkie fragmenty danych zapisywane lokalnie na twoim urządzeniu. Pomagają w funkcjonowaniu naszej strony - zapisują Twoje ustawienia strony takie jak motyw czy język. Poprawiają funkcjonowanie reklam i pozwalają nam na przeprowadzanie analityki odwiedzin strony. Korzystając ze strony zgadasz się na ich wykorzystanie.