2013-01-11 65 views
1

可能重複:
Why does !new Boolean(false) equals false in JavaScript?的Javascript布爾類型

var b = new Boolean(null); 


alert(b instanceof Boolean); 

if(b) { 
    alert('cv'); 
    alert(b.toString()); 
} 

如果爲什麼執行的代碼塊? b應該是一個布爾類型並評估爲false?

請解釋一下感謝

+0

新布爾,新的數字和新的字符串不應該在實際的JavaScript中使用。這有點像你不會使用'=='比較java中的字符串,你不會在javascript中使用'new String',因爲'new String(「asd」)== new String(「asd」)// false '但是''asd「==」asd「// true'對於新的布爾值和新的數字相同 – Esailija

回答

1

所有object s爲truthy,除了null。因此,即使您專門編寫new Boolean(false),它仍然是真的。

這就是爲什麼你從不寫new Boolean。若要強制轉換爲布爾型,只需使用!!

2

代碼塊將執行,因爲該對象存在且未定義,儘管它當前沒有值。在JavaScript中的布爾對象的點是將非布爾對象轉換爲「true」或「false」值。

,如果你有

if(b.valueOf()); 

,將評估對象的實際價值。