https://javascript.ru/forum/misc/737...tml#post484870
Согласно пункту 7.2.13 спецификации ECMAScript вычисление происходит так: (пустая строка ToNumber("") согласно 7.1.3 преобразуется в 0)
0 == false // подходит 7-ой пункт -> x == ToNumber(y) -> получаем 0 == 0
0 == 0 // теперь первый пункт -> x === y -> получаем 0 === 0
0 === 0 // по алгоритму строгого сравнения получаем true
true
"" == false // подходит 7-ой пункт -> x == ToNumber(y) -> получаем "" == 0
"" == 0 // теперь подходит 5-ый -> ToNumber(x) == y -> получаем 0 == 0
0 == 0 // теперь первый пункт -> x === y -> получаем 0 === 0
0 === 0 // по алгоритму строгого сравнения получаем true
true
Сообщение от AlexanderFilatov
|
Читая книгу "Выразительный JavaScript" столкнулся с таким утверждение автора:"Правила преобразования типов в булевы значения говорят, что 0, NaN и "" считаются false, а все остальные true.
|
Согласно пункту 7.1.2 ToBoolean(argument) возвращает false тогда, и только тогда, когда argument равен одному из следующего:
undefined,
null,
false,
+0,
-0,
NaN или
"".