> Как работает приведение типов в выражениях с операторами сравнения в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Сбер
Стек: JavaScript
> Пример ответа
В JavaScript приведение типов в операторах сравнения работает по-разному в зависимости от используемого оператора.
Нестрогие операторы (==, !=) выполняют приведение типов перед сравнением. Основные правила:
-
Если типы совпадают - сравниваются напрямую.
-
Если один операнд
null, а другойundefined- результатtrue. -
Если один операнд число, а другой строка - строка преобразуется в число.
-
Если один операнд логический - он преобразуется в число (
true→ 1,false→ 0). -
Если один операнд объект, а другой примитив - объект преобразуется в примитив через
valueOfилиtoString.
Пример:
JAVASCRIPT'5' == 5 // true (строка '5' становится числом 5)false == 0 // true (false → 0)null == undefined // true
Строгие операторы (===, !==) не выполняют приведение типов. Сравнение возвращает true только если типы и значения совпадают.
Операторы сравнения (<, >, <=, >=) также приводят типы к числам, но с особым правилом для строк: если оба операнда - строки, они сравниваются лексикографически (по Unicode-кодам символов).
Пример:
JAVASCRIPT'2' > '10' // true (сравнение строк: '2' > '1')'2' > 10 // false (строка '2' преобразуется в число 2)
Важно: NaN не равен ничему, включая самого себя (NaN == NaN → false), а null и undefined ведут себя особым образом — при нестрогом равенстве они равны только друг другу, но при сравнении через </> преобразуются в числа (null → 0, undefined → NaN).
> Похожие задачи по frontend
Почему this равен window, а this.name выводит другое значение в JavaScript
Как предотвратить двойной заказ при двойном клике на кнопку?
Как реализовать метод addClass с поддержкой цепочки вызовов
Какие проблемы решаются с помощью статических методов Promise в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью