最近面試比較多,但每次我問這個問題的時候,答出來的同學並不多
var a = 0; if( a) { alert(1); }
這個問題有部分人會答alert(1), 有些人會答不執行。
結果是不執行的,但答不執行的同學也說不出為什么,他只會說以他的經驗,所以在這里我覺得有必要補下js基礎知識,js基礎好的人可以跳過此博文。
首先說這個問題之前 我們先回憶下 Boolean();
Boolean 是個轉型函數。即可以傳任何值轉成 boolean類型, 即返回true 和 false.
那么什么時候是true , 什么時候是false, 它是有一定規則的。
我通過一張表來表明此規則。
數據類型 | 轉換為true的值 | 轉換為false的值 |
Boolean | true | false |
String | 任何非空字符串 | “” |
Number | 任何非0數值 | 0和NaN |
Object | 任何對象 | null |
Undefined | undefined |
注: Undefined 沒有轉換為true的值。
從這里我們一目了然, Boolean(0) 返回的是 false;
那么當if語句里面沒有表達式,只是某個值時 如 if (XXX) 它會自動執行Boolean(xxx)操作, 即 if(XXX) = if(Boolean(xxx))
所以我們對應上面Boolean的轉換規則 ,再結合上面的題,就非常容易理解了。
這就是 if(0) 會返回false的原因。