Почему 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"