2011-09-30 88 views
25

为什么在JavaScript中使用0 == ""?我发现了一个similar post here,但为什么数字0类似一个空字符串?当然,0 === ""是错误的。为什么在JavaScript中使用0 ==“”

+0

你的意思0 “铸造” 假 “” 流延假和支票是假的==假=>真 –

+0

对于PHP,请参见http:// PHP。 net/manual/en/types.comparisons.php – apscience

+0

我相信这是因为Javascript在某些情况下自动强制字符串和数字,==运算符是其中的一种上下文,并且“”强制为0 – millimoose

回答

46
0 == '' 

左操作数的类型为Number。
右操作数是String类型。

在这种情况下,右边的操作数被强制转换为类型数:

0 == Number('') 

这导致

0 == 0 

摘要相等比较算法(数4) :

如果Type(x)是Number和Type(y)是String,则返回 的比较结果x == ToNumber(y)。

来源:http://es5.github.com/#x11.9.3

+0

谢谢,我只是期望它相反,0转换为字符串,然后是错误的。 –

+0

是的,另一方面,这意味着说两者都是虚假的 - 就像在其他答案中一样,这是不正确的。因为 - 正如你所表现的那样 - 原因是“”=> 0.感谢您的支持! –

+1

@霍斯特 - 是的,没错。如果你在if(0)或if(“”)“中单独使用它们,但是在==比较的情况下,这两个都不会发生。 (不知道为什么Šime还在上面留言,说“因为这两个值都是虚假的”)。 – nnnnnn

相关问题