PassFront
  1. PassFront
  2. База знаний
  3. Основы языка

В чем разница между == и === в JS?

Основы языка

`==` — нестрогое сравнение с приведением типов, `===` — строгое сравнение без приведения. === сравнивает и значение, и тип.

=== (строгое)

Возвращает true только если типы и значения совпадают. Приведения нет.

1 === 1;     // true
1 === '1';   // false — разные типы
null === undefined; // false

== (нестрогое)

Перед сравнением приводит операнды к одному типу, что даёт неочевидные результаты:

1 == '1';        // true
0 == false;      // true
'' == false;     // true
null == undefined; // true
[] == false;     // true

Почему предпочитают ===

Правила приведения == сложны и порождают баги. === предсказуем, поэтому в большинстве стайлгайдов используется по умолчанию.

Единственное частое исключение

Проверка «null или undefined» одним сравнением:

if (value == null) {
  // сработает и для null, и для undefined
}

Особый случай

NaN === NaN; // false — используйте Number.isNaN()

Коротко для собеседования

=== сравнивает значение и тип без приведения — используйте его по умолчанию. == приводит типы и даёт неочевидные результаты; оправдан в основном для проверки value == null.

Другие вопросы раздела