Почему false == "false" это ложь?

Я все еще изучаю основы javaScript и не понимаю, почему это происходит.

Наличие типа принуждения false == "false"будет преобразован в:

false == false //true

или же

"false" == "false" //true

Итак, почему false == "false" ложно?

4 ответа

Решение

Вы неправильно поняли правила преобразования типов. false не преобразуется в строку перед сравнением.

Если Type(x) - Boolean, вернуть результат сравнения ToNumber(x) == y.

false конвертируется в число, которое дает:

+0 == "false"

… затем …

Если Type(x) равен Number, а Type (y) равен String, вернуть результат сравнения x == ToNumber(y).

... "false" конвертируется в число, которое дает:

+0 == NaN

... что ложно.

Ответ заключается в том, что "false" - это строка (как отметил Герардо Фурадо в комментариях), тест, который вы проводите, эквивалентен false = "hello".

Javascript не смотрит на слово в строке, чтобы определить, является ли оно логическим, и затем пытается получить значение из этого.

Замечания:

В общем, в javascript теперь предпочтительно использовать оператор ===, чтобы избежать всего этого.

false == "false" // false

потому что логическое ложное значение преобразуется в 0, поэтому мы сравниваем 0 с "ложным" и вывод ложный

Это разные виды предметов. "string" а также boolean,

Так:

false.toString() == "false"
Другие вопросы по тегам