Вход

Просмотр полной версии : Операторы сравнения. Почему false?


RioEiner
30.11.2023, 12:40
Доброздравия читающим!
Такой вопрос возник:

console.log('true' == true); // выводит false

Почему? У нас же НЕ строгое равенство...

Aetae
30.11.2023, 12:44
Простой ответ: потому что так решили при создании языка, в этом нет сакральной логики.
Углублённый ответ: иди и почитай спецификацию приведения типов, там по пунктам расписано что и как происходит, почему - ответ выще.
Правильный ответ: забудь об == и всё. Просто всегда используй === и не забивай себе голову бесполезным мусором.

voraa
30.11.2023, 14:12
'true' == true
По спецификации
Если один из операторов Boolean, то он приводится к Number и сравнивается снова.
'true' == 1
Если один из операторов String, а другой Number, то делается попытка преобразовать строку в число. И далее сравнивается строго
NaN === 1