Вебсправочник
Справочник JavaScript

Сравнения JavaScript: ===, == и проверка значений

Почему строгое сравнение обычно проще предсказать и как учитывать преобразование типов.

Основная идея

Оператор === сравнивает без неявного приведения разных типов к одному. Поэтому число 5 и строка «5» не равны строго. Оператор == использует дополнительные правила преобразования, которые легко неверно понять в коде формы или фильтра.

Объекты сравниваются по идентичности, а не по совпадению всех полей. Два отдельно созданных объекта с одинаковым содержимым не становятся равными через ===. Для предметного сравнения выбирайте нужные поля или явно определённую стратегию.

Пример JavaScript

console.log(5 === "5");
console.log(5 == "5");
const first = { id: 1 };
const second = { id: 1 };
console.log(first === second);
console.log(first.id === second.id);

Результаты: false, true, false и true. Последняя строка сравнивает числовые идентификаторы, а не сами объекты.

Частая ошибка

NaN не равно самому себе через ===. Для проверки некорректного числового результата используйте Number.isNaN после осознанного преобразования.

Самостоятельная проверка

Сравните значение из текстового поля с числом после Number(). Проверьте пустую строку отдельно, чтобы она не превратилась в допустимый ноль случайно.

Код здесь показан для изучения. Встроенная песочница сайта выполняет только HTML/CSS. JavaScript проверяйте в собственном учебном файле или консоли своего тестового проекта; не вставляйте непонятный код на страницах с личными данными.

Следующие темы: типы, объекты.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.