Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Операторы сравнения. Почему false? (https://javascript.ru/forum/dom-window/85640-operatory-sravneniya-pochemu-false.html)

RioEiner 30.11.2023 12:40

Операторы сравнения. Почему false?
 
Доброздравия читающим!
Такой вопрос возник:

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

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

Aetae 30.11.2023 12:44

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

voraa 30.11.2023 14:12

Цитата:

Сообщение от RioEiner
'true' == true

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


Часовой пояс GMT +3, время: 06:37.