2011-09-30 35 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

相關問題