Почему false == "false" неверно?
Я все еще изучаю основы javaScript, и я не понимаю, почему это происходит.
Приведение типа принуждения false == "false"
будет преобразовано в:
false == false //true
или
"false" == "false" //true
Итак, почему false == "false"
является ложным?
Ответы
Ответ 1
Вы неправильно поняли правила преобразования типов . false
не преобразуется в строку перед сравнением.
Если Type (x) является логическим, верните результат сравнения ToNumber (x) == y.
false
преобразуется в число, которое дает:
+0 == "false"
... затем...
Если Type (x) - Number и Type (y) - String, верните результат сравнения x == ToNumber (y).
... "false"
преобразуется в число, которое дает:
+0 == NaN
... который является ложным.
Ответ 2
Ответ заключается в том, что "false" - это строка (как указал Херардо Фурадо в комментариях), тест, который вы делаете, эквивалентен false = "привет".
Javascript не смотрит на слово в строке, чтобы определить, является ли оно логическим, а затем попытаться получить от него значение.
Примечание:
В общем, в javascript теперь предпочтительнее использовать оператор ===, чтобы избежать всего этого.
Ответ 3
false == "false" // false
потому что логическое значение false преобразуется в 0, поэтому мы сравниваем 0 с "false", а вывод - false
Ответ 4
Это разные предметы.
"string"
и boolean
.
Итак:
false.toString() == "false"