Типовое приведение значений в JavaScript

Первое выражение выведет true, второе — строку «null». Непустые строки 'true' и '0' обе truthy, независимо от их текстового смысла.

Короткий ответ

Что ответить на собеседовании

Первое выражение выведет true, второе — строку «null». Непустые строки 'true' и '0' обе truthy, независимо от их текстового смысла.

Подробный разбор

Ответ с пояснениями

Условие

Определите, какие значения получатся после выполнения указанных выражений, учитывая особенности логических и строковых преобразований в JavaScript.

console.log(!"true" == !"0"); // ?
console.log("" + null);       // ?

Ответ

Первое выражение выведет true, второе — строку «null». Непустые строки 'true' и '0' обе truthy, независимо от их текстового смысла.

Оператор ! сначала приводит операнд к boolean и инвертирует: обе непустые строки дают false. Затем false == false даёт true; здесь результат был бы тем же с ===.

В выражении '' + null один операнд строковый, поэтому + выполняет конкатенацию. null преобразуется в текст 'null', и результат — строка, не специальное значение null. Логическое преобразование, числовое преобразование и строковое преобразование — разные операции; не стоит переносить правила одной на другую.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее