Вопрос проверяет понимание скрытого приведения типов в JavaScript и потенциальных ловушек оператора ==.
При нестрогом сравнении == JavaScript пытается привести операнды к одному типу. Правила зависят от типов значений: строки могут превращаться в числа, null и undefined считаются равными друг другу, а объекты приводятся к примитивам. Эти преобразования не всегда очевидны, из-за чего сравнение может вести себя неожиданно. Именно поэтому в большинстве случаев рекомендуют использовать ===.
Нестрогое сравнение подчиняется формальным, но сложным правилам.
Определение: Type coercion — автоматическое приведение типов JavaScript при выполнении операций, включая ==.
==Перед сравнением JavaScript может:
Привести строку к числу.
Привести объект к примитиву.
Особым образом обработать null и undefined.
Строка и число:
'5' == 5; // true
null и undefined:
null == undefined; // true
Объект и примитив:
[1] == 1; // true
Объект сначала преобразуется в примитив.
сравнение выглядит “логичным”, но работает неявно
легко допустить ошибку в условиях
код сложнее читать и поддерживать
Использовать ===, если нет явной причины полагаться на приведение типов.
'5' === 5; // false
Вывод: при == JavaScript автоматически приводит типы по набору правил, что делает поведение гибким, но потенциально опасным.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию