在討論布林值之前,要先理解truthy value和falsy value的概念,falsy value是指一個不完全是false的值,但當我們嘗試將它轉變成布林值時,我們會得到false。
在JavaScript中,有5個falsy values,分別是0、空字串(empty string)、NaN、null及undefined。
當然false的本身也是false,除了上述5個例子和false之外的,都稱作truthy value,像是任一不為0的數字、任何不是空字串的字串等等,當我們試圖將它們轉變成布林值時,就會得到true。
console.log(Boolean(0));
// false
console.log(Boolean(-1));
// true
console.log(Boolean(""));
// false
console.log(Boolean("Hello, world!"));
// true
console.log(Boolean({}));
// true
實際上布林函數可能很少會被使用到,因為JavaScript會自己幫我們進行type coercion,但我們還是必須了解truthy value和falsy value的概念。
那JavaScript會在什麼樣的情況下進行type coercion呢?一種是使用邏輯運算子時,另一種則是在邏輯語境中,例如if / else陳述式裡,這個就先留到明天再繼續說明了。