为什么false ==“false”是假的?

时间:2016-08-07 12:37:53

标签: javascript

我还在学习javaScript的基础知识,我不明白为什么会这样。

将类型强制false == "false"转换为:

false == false //true

"false" == "false" //true

那么,为什么false == "false"是假的?

4 个答案:

答案 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"