Что выведет код Middle Типы и приведение обновлено

Булево в нестрогом сравнении

Вопрос

Что выведет код? По строке на каждый вывод.

console.log(true == '1');
console.log(true == 'true');
console.log('0' == false);
console.log(Boolean('0'));

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: true, false, true, true. В == булево всегда сначала превращается в число. true == '1' это 1 == '1', строка приводится к числу: true. true == 'true' это 1 == NaN: false.

Что выведет

true
false
true
true

Разбор

В == булево всегда сначала превращается в число. true == '1' это 1 == '1', строка приводится к числу: true. true == 'true' это 1 == NaN: false. '0' == false это '0' == 0, то есть 0 == 0: true. При этом Boolean('0') это true, ведь непустая строка истинна. Получается, что '0' одновременно «равен false» и истинен в if, отличная причина не писать == true.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме