Первое выражение выведет true, второе — строку «null». Непустые строки 'true' и '0' обе truthy, независимо от их текстового смысла.
Типовое приведение значений в JavaScript
Первое выражение выведет 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. Логическое преобразование, числовое преобразование и строковое преобразование — разные операции; не стоит переносить правила одной на другую.