=== (ścisła równość) porównuje wartość i typ bez konwersji. == (luźna równość) najpierw przeprowadza konwersję typów, co prowadzi do zaskakujących wyników.
js
== ;
== ;
== ;
== ;
== ;
=== ;
=== ;
=== (ścisła równość) porównuje wartość i typ bez konwersji. == (luźna równość) najpierw przeprowadza konwersję typów, co prowadzi do zaskakujących wyników.
== ;
== ;
== ;
== ;
== ;
=== ;
=== ;
Reguły konwersji są nieoczywiste i prowadzą do błędów. Na przykład, [] == ![] zwraca true (znana osobliwość). Rzadko chcesz, aby JavaScript w ukryciu konwertował typy podczas porównania.
Zawsze używaj === (i !==). Jedynym powszechnym, celowym wyjątkiem jest sprawdzenie, czy wartość to null lub undefined:
if (value == null) { ... } // true for BOTH null and undefined — a deliberate idiom
W pozostałych przypadkach ścisła równość zapewnia przewidywalne porównania. Aby porównać obiekty, potrzebujesz głęboką kontrolę równości (porównują się po referencji, więc {a:1} === {a:1} to false).