我还在学习javaScript的基础知识,我不明白为什么会这样。
将类型强制false == "false"
转换为:
false == false //true
或
"false" == "false" //true
那么,为什么false == "false"
是假的?
答案 0 :(得分:19)
你误解了type conversion rules。在比较之前,false
不会转换为字符串。
如果Type(x)是布尔值,则返回比较结果ToNumber(x)== y。
false
转换为数字,即:
+0 == "false"
......然后......
如果Type(x)是Number而Type(y)是String, 返回比较结果x == ToNumber(y)。
... "false"
转换为数字,它给出了:
+0 == NaN
......这是假的。
答案 1 :(得分:4)
答案是因为“false”是一个字符串(正如Gerardo Furado在评论中指出的那样),你所做的测试等同于false =“hello”。
Javascript不会查看字符串中的单词来确定它是否是布尔值,然后尝试从中获取值。
注意:
一般情况下,在javascript中,现在首选使用===运算符,以避免所有这些。
答案 2 :(得分:0)
false == "false" // false
因为,布尔值false被转换为0,因此,我们将0与" false"进行比较。输出为假
答案 3 :(得分:-2)
这些是不同类型的物品。
"string"
和boolean
。
所以:
false.toString() == "false"