0%

JS 核心觀念筆記 - Truthy and Falsy

core

Truthy 真值

下方有一個 if 判斷式,若判斷內容為 True 就會執行 console 內容。

1
2
3
if (1 == 1) {
console.log("正確就會執行文字"); //正確就會執行文字
}

若改成這樣也是會正確執行。

1
2
3
if (5) {
console.log("正確就會執行文字"); //正確就會執行文字
}

原因是因為 if 判斷內容為真值

falsy

但如果將判斷的內容改為空值undefined 或 0,屬於 falsy,就會執行 else。

1
2
3
4
5
if ("") {
console.log("正確就會執行文字");
} else {
console.log("執行 else"); //執行 else
}

但如果引號中有任何值(包含空白),就會變成 truthy。

1
2
3
4
5
if (" ") {
console.log("正確就會執行文字"); //正確就會執行文字
} else {
console.log("執行 else");
}

上方判斷中插入空白,就會執行 Truthy 內容。

你以為是 falsy 但其實是 truthy

以下幾個例子。

判斷內容為空陣列。

1
2
3
4
5
if ([]) {
console.log("正確就會執行文字"); //truthy
} else {
console.log("執行 else");
}

判斷內容為空物件。

1
2
3
4
5
if ({}) {
console.log("正確就會執行文字"); //truthy
} else {
console.log("執行 else");
}

那這個呢?

1
2
3
4
5
if (new Number(0)) {
console.log("正確就會執行文字");
} else {
console.log("執行 else");
}

答案是 Truthy,原因是 new Number(0),是一個物件,但判斷內容不要使用包裹物件的形式。

所以上方最後一個判斷方式不建議使用。

參考資料