Вопрос по преобразованиям типов!?
Всем привет!Читая книгу "Выразительный JavaScript" столкнулся с таким утверждение автора:"Правила преобразования типов в булевские значения говорят, что 0, NaN и "" считаются false, а все остальные true.
Поэтому 0 == false и "" == false." alert(0 == false); // true alert("" == false); // true Видимо он что-то путает, т.к. при сравнении значений разных типов происходит численное преобразование.Если кто читал и понял, отпишитесь пожалуйста. |
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 Цитата:
|
Цитата:
используйте === |
Вы всё правильно написали!Я точно так же преобразовывал!Просто я не вижу связи между преобразованием в булевское значение и примерами, где происходит числовое преобразование!?
|
vanished
|
Часовой пояс GMT +3, время: 06:23. |