我还在学习javaScript的基础知识,我不明白为什么会这样.
类型强制false == "false"将转换为:
false == false //true
Run Code Online (Sandbox Code Playgroud)
要么
"false" == "false" //true
Run Code Online (Sandbox Code Playgroud)
那么,为什么false == "false"是假的?
Que*_*tin 20
您误解了类型转换规则.false在比较之前不会转换为字符串.
如果Type(x)是布尔值,则返回比较结果ToNumber(x)== y.
false 转换为数字,它给出:
+0 == "false"
Run Code Online (Sandbox Code Playgroud)
… 然后 …
如果Type(x)为Number且Type(y)为String,则返回比较结果x == ToNumber(y).
... "false"被转换为数字,它给出:
+0 == NaN
Run Code Online (Sandbox Code Playgroud)
......这是假的.
答案是因为“ false”是一个字符串(正如Gerardo Furado在评论中指出的那样),所以您进行的测试等同于false =“ hello”。
Javascript不会查看字符串中的单词来确定它是否为布尔值,然后尝试从中获取值。
注意:
通常,在javascript中,现在最好使用===运算符,以避免所有这些情况。