0

Не понимаю, почему в следующем коде выводится false

const data = true;
console.log(data == "true");

ведь, если data приводится к строке, то получается

console.log("true" == "true");

а, если "true" приводится к булеву типу, то получается

const data = true;
console.log(data == true);

в обоих случаях выдается true. Почему в первом варианте на выходе false?

tilin
  • 2,840
  • Потому что data приводится к числу 1, а строка true приводится к числу NaN. Так в стандарте – Alexey Ten Nov 07 '17 at 19:41
  • ты сравниваешь два разных типа – Air Nov 07 '17 at 19:42
  • @Alexey Ten т.е. здесь как в си только одно неявное преобразование? А где в стандарте посмотреть можно? – tilin Nov 07 '17 at 19:44
  • 1
    http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3 пункт 6, а потом п. 4 – Alexey Ten Nov 07 '17 at 19:45
  • https://learn.javascript.ru/types-conversion – Alex Nov 07 '17 at 19:45
  • @Alexey пункт 6, а потом п. 4 - все понятно, спасибо. – tilin Nov 07 '17 at 19:51
  • 2
    В одном из ответов на Возможный дупликат вопроса: undefined, null при преобразовании в boolean превращаются в false, но это не означает, что они равны false О, боги, верните мне мой с++ ))) – tilin Nov 07 '17 at 19:57
  • @tilin в вашем с++ такая же фигня с нулевым указателем. Существуют платформы где нулевой указатель численно равен -1, но обозначается он всегда как 0. – Pavel Mayorov Nov 13 '17 at 07:17
  • @tilin а уж что можно устроить с переопределением операторов... – Pavel Mayorov Nov 13 '17 at 07:18

0 Answers0