我试图理解这里的一些东西,解释自己的最好方法是举一个例子:
"" == false
// true
"0" == false
// true
false == false
// true
但是这里发生了什么?
"" == "0"
// false
如果 ""
计算结果为 false
并且 "0"
计算结果为 false
,则逻辑预测它是就像我写的一样 false == false
。
我确实意识到我正在尝试在这里比较两个字符串,但是语言如何知道 "a"== "b"
或 ""== "0 “
?在这种情况下,强制是如何发生的?
最佳答案
Why “” == “0” is false in javascript?
因为操作数是两个内容不同的字符串。仅当操作数的数据类型不同时才会发生类型强制。
相关问题:
<小时/>If
""
evaluates to false and"0"
evaluates tofalse
the logic predicts that it is the same as i writefalse == false
让我们看看实际比较是如何解决的:
""== false
被强制为 0 == 0
"0"== false
被强制为 0 == 0
false == false
:相同的数据类型,因此直接比较值
如您所见,"0"
不会“评估”为 false
,它会转换为整数,并且该值被比较。 (""
的计算结果为 false
(空字符串),但转换为数字时,结果为 0
)。
将值转换为 bool 值和将值与 bool 值进行比较之间存在很大差异。最明显的例子:!!"0"
(true
) 和 "0"== false
(true
) .
当您使用松散比较 (==
) 来比较不同数据类型的值时,它们始终会被强制转换为数字(如果您将对象与字符串进行比较,则可能会转换为字符串)。
看看 specification有关比较算法的更多信息。
关于javascript - 为什么 ""== "0"在 JavaScript 中是 false ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21889320/