是 Ray 不是 Array

整理這些技術筆記真的很花時間,如果你願意 關閉 Adblock 支持我,我會把這份感謝轉換成更多「踩坑轉避坑」的內容給你!ヽ(・∀・)ノ

Advertisement

[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 奇怪的部分

整理這些技術筆記真的很花時間,如果你願意 關閉 Adblock 支持我,我會把這份感謝轉換成更多「踩坑轉避坑」的內容給你!ヽ(・∀・)ノ

Advertisement

你的支持會直接轉換成更多技術筆記

如果我的筆記讓你少踩一個坑、節省 Debug 的時間,
也許你可以請我喝杯咖啡,讓我繼續當個不是 Array 的 Ray ☕

buymeacoffee | line | portaly

Terminal

分享這篇文章

留言

© 2025 Ray. All rights reserved.

Powered by Ray Theme