我仍在学习JavaScript的基础知识,不明白为什么会发生这种情况。
当类型强制转换 false == "false"
时,会被转换为:
false == false //true
或者"false" == "false" //true
所以,为什么 false == "false"
是假的呢?我仍在学习JavaScript的基础知识,不明白为什么会发生这种情况。
当类型强制转换 false == "false"
时,会被转换为:
false == false //true
或者"false" == "false" //true
所以,为什么 false == "false"
是假的呢?你误解了类型转换规则。在比较之前,false
不会被转换为字符串。
如果x的类型是Boolean,则返回 ToNumber(x) == y 的比较结果。
false
被转换为一个数字,计算结果如下:
+0 == "false"
如果x的类型为数字且y的类型为字符串,则返回比较结果x == ToNumber(y)。
...然后将"false"
转换为数字,得到:
+0 == NaN
...这是错误的。
===
不会这样。 - nnnnnnfalse == "false" // false
这些是不同类型的项目。
"string"
和boolean
。
所以:
false.toString() == "false"
true == "true"
,结果为false
。回答非常快:) - viery365==
尝试执行类型转换...因此说“一个是字符串,另一个是布尔值”在这里并不是真正的情况。恰好发生的是,在最终结果中,类型转换不等价。 - Kellen Stuart