=== (přísná rovnost) porovnává hodnotu a typ bez konverze. == (volná rovnost) nejprve provádí konverzi typů, což vede k překvapivým výsledkům.
js
== ;
== ;
== ;
== ;
== ;
=== ;
=== ;
=== (přísná rovnost) porovnává hodnotu a typ bez konverze. == (volná rovnost) nejprve provádí konverzi typů, což vede k překvapivým výsledkům.
== ;
== ;
== ;
== ;
== ;
=== ;
=== ;
Pravidla konverze nejsou zřejmá a vedou k chybám. Například [] == ![] je true (notorická zvláštnost). Zřídka chcete, aby JavaScript tiše konvertoval typy za vašimi zády během porovnání.
Vždy používejte === (a !==). Jedinou běžnou, záměrnou výjimkou je kontrola null nebo undefined společně:
if (value == null) { ... } // true for BOTH null and undefined — a deliberate idiom
U všeho ostatního přísná rovnost udržuje porovnání předvídatelné. Chcete-li porovnávat objekty, potřebujete kontrolu hluboké rovnosti (porovnávají podle reference, takže {a:1} === {a:1} je false).