存在與布林 Existence and Booleans

在 JavaScript 中,我們可以透過 Boolean 來判斷一個值是否存在,某些值被轉型為布林後會被判斷為 false,如下:

1
2
3
4
Boolean(undefined);   // false
Boolean(null); // false
Boolean(''); // false
Boolean(0); // false

表示這些值都不存在,但其實一般開發並不太會使用 Boolean 這個函式直接強制轉型,而是會透過 if-else 來判斷
如下範例,如果沒有為一個參數主動賦值,預設值就是 undefined,因此會被強制轉型為 false

1
2
3
4
5
6
7
var a;

// goes to internet and looks for a value

if (a) {
console.log('Something is there.');
}

接著看到如果賦值為 0,也會被強制轉型為 false ; 但如果再加上一個 || 使值為 0 的時候也通過,判定的結果就會正確,因為 === 優先於 ||,在 falsetrue 的結果,結果就會是 true

1
2
3
4
5
6
7
8
9
10
var a = 0;

// 初始條件
if (a || a === 0) {}

// === 運算子優先運算
if (a || true) {}

// || 運算子由左到右,0 被轉型為 false
if (false || true) {}