alaskafx
@alaskafx
Не .do Frontend

Строка или число (не пустые) не являются true?

Пишу такое чудо:

let a = 123
let b = true


А теперь проверяю:
a == b
// false
a == true
 // false


результаты меня немного запутали...
Как так получается, что строка или число, которые не пустые - не являются true?
  • Вопрос задан
  • 84 просмотра
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
https://262.ecma-international.org/5.1/#sec-11.9.3
Кратко: поскольку тип левого операнда сравнения - Number, а правого - Boolean, то выполняется сравнение x == ToNumber(y), второй операнд преобразуется к числу (1), пункт 7 алгоритма.
Ответ написан
Комментировать
MrDecoy
@MrDecoy Куратор тега JavaScript
Верставший фронтендер
true в данном случае преобразуется в 1.
123 == 1 // false
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
https://learn.javascript.ru/comparison
обратите внимание на "Строгое сравнение"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы