2016-12-06 76 views
1

爲什麼與null,自動類型轉換與不同的二元運算符不同?JavaScript,帶「null」的自動類型轉換

console.log(null * 8) // => 0 * 8 => 0 
console.log(null == 0) // => false 

因此與第二條語句,沒有得到類型強制轉換爲0。

+2

語言是這樣定義的。你想解決什麼問題? – Pointy

+0

沒有一個具體的問題,我試圖解決,只是好奇爲什麼語言這樣工作。 – Arshaan

+1

http://stackoverflow.com/questions/13407544/why-null-in-javascript-is-bigger-than-1-less-than-1-but-not-equal-to-0 –

回答

1

這是因爲,當你想multiply,兩個操作數必須是數字。因此,JS使用ToNumber抽象操作,並且ToNumber(null)爲0.

當您compare時,值不需要是數字。比較非數值是有意義的。所以null不會被強制爲一個數字。

0

null被強制爲+0進行數字操作。但是,==不是數字運算符,因此不會執行任何類型的強制轉換,因此將null == 0指定爲false