[JS奇怪的世界]No.19 存在與布林值

存在與布林值

一般來講我們可以手動使用 Boolean、Number 等函數來做強制轉型的動作,但是課程也是強調不要這樣做(手動轉型),但是用來展示效果是可以的,舉例我們將 undefined 轉換成布林值 ↓

1
Boolean(undefined);

會得到一個 false

那 Null 呢?

1
Boolean(null);

一樣會得到一個 false

空字串呢?

1
Boolean('');

還是一樣會得到一個 false。

而這代表著這三個東西都是不存在沒有東西的意思,所以當我們若使用這特性去搭配判斷式就可以知道有無資料了,所以可以這樣寫 ↓

1
2
3
4
5
6
7
var a = '';

if (a) {
console.log('有資料');
} else {
console.log('沒資料');
};

接下來就比較有陷阱的,課程上也有特別講到 ↓

1
Boolean(0);

這也是一個 false,課程也有講到一個範例 ↓

1
2
3
4
5
6
7
var a = '';

if (a || a === 0) {
console.log('有資料');
} else {
console.log('沒資料');
};

這範例中課程有說 || 這個運算子比 === 優先性還低,所以會先做 === 號的判斷。

所以程式碼處理之後會變成這樣

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

if (a || true) {
console.log('有資料');
} else {
console.log('沒資料');
};

a 會被強制轉型變成布林值,而 0 代表著 false

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

if (false || true) {
console.log('有資料');
} else {
console.log('沒資料');
};

那這時候就可以這樣玩 false || true,這樣子會回傳什麼?true,因為在 || 這個運算子,只要有一個 true 就會回傳 true 的結果。

圖源

JavaScript 全攻略:克服 JS 奇怪的部分

0%