=== (строгое равенство) сравнивает значение и тип без преобразования. == (нестрогое равенство) сначала выполняет приведение типа, что приводит к неожиданным результатам.
js
== ;
== ;
== ;
== ;
== ;
=== ;
=== ;
=== (строгое равенство) сравнивает значение и тип без преобразования. == (нестрогое равенство) сначала выполняет приведение типа, что приводит к неожиданным результатам.
== ;
== ;
== ;
== ;
== ;
=== ;
=== ;
Правила приведения типа неочевидны и приводят к ошибкам. Например, [] == ![] возвращает true (печально известная особенность). Вам редко нужно, чтобы JavaScript молча преобразовывал типы за вашей спиной при сравнении.
Всегда используйте === (и !==). Единственное распространённое, намеренное исключение — проверка одновременно null или undefined:
if (value == null) { ... } // true for BOTH null and undefined — a deliberate idiom
В остальных случаях строгое равенство делает сравнения предсказуемыми. Для сравнения объектов вам нужна проверка глубокого равенства (они сравниваются по ссылке, поэтому {a:1} === {a:1} это false).