Тип Coверсия в Javascript бывает, если используется ==
, что составляет kinda loose сравнение оператор.
===
является оператор строгого сравнение, которое не принуждать типов при сравнении с тем, что остается целым числом, а другой BOOL
+true === true.valeOf() // false
+true == true.valueOf() // true
Docs:
Идентичность (= ==) оператор ведет себя идентично оператору равенства (==) , за исключением того, что преобразование типа не выполняется, и типы должны быть одинаково считается равным.
Почему true.valueOf() не возвращает 1
Ответ является true.valueOf
возвращает true
, который является примитивным значением булева объекта. Кроме того, цитата из MDN
Метод valueOf булевых возвращает примитивное значение объекта Логическое или буквального Boolean в качестве логического типа данных.
Что +true
сделать:
+true
такой же, как Number(true)
и это хорошо известный факт, что 0
является false
и 1
является true
почти на всех языках. На самом деле в C++ они : используются как булевы.
Не понимаю. '+ true' берет логическое число. 'true.valueOf()' возвращает 'true'. Конечно, '1' не ** строго соответствует **' true'. – deceze
Вы сравниваете логические и целочисленные значения и задаетесь вопросом, почему это не то же самое? Какой был вопрос? – feeela
Зачем true.valueOf() не возвращает 1 – Vijay