在 JavaScript 中,除了布林值本身就是真值或假值外,其他型別會在布林的執行環境中轉換成為 真值
或假值
以以下程式碼為例:
因 數值 1
為真值,轉換為 true
,所以執行 if 判斷式
if (1) {
console.log('執行 if 判斷式');
}
// 執行 if 判斷式
需要要注意的是 - 不要把真假值與隱含轉型混淆
字串 1
雖然在寬鬆相等中會因自動轉型而與 布林值 true
相等,但此例中是因 字串 1
使真值,所以執行 if 判斷式
if ('1') {
console.log('執行 if 判斷式');
}
// 執行 if 判斷式
數值 5
也因是真值,所以執行 if 判斷式,與是否等同 布林值 true
無關
console.log(1 == true); // true
console.log(5 == true); // false
if (5) {
console.log('執行 if 判斷式');
}
// 執行 if 判斷式
真值大概有以下幾種:
以下列舉幾個當作範例:
除了 0 以外的數值,包含負值皆為真值
if (5) {
console.log('執行 if 判斷');
} else {
console.log('執行 else 判斷');
}
// 執行 if 判斷
if (-7) {
console.log('執行 if 判斷');
} else {
console.log('執行 else 判斷');
}
// 執行 if 判斷
任何非空字串的字串皆為真值
if ('abc') {
console.log('執行 if 判斷');
} else {
console.log('執行 else 判斷');
}
// 執行 if 判斷
if ('0') {
console.log('執行 if 判斷');
} else {
console.log('執行 else 判斷');
}
// 執行 if 判斷
if ('false') {
console.log('執行 if 判斷');
} else {
console.log('執行 else 判斷');
}
// 執行 if 判斷
所有陣列皆為真值
if ([1]) {
console.log('執行 if 判斷');
} else {
console.log('執行 else 判斷');
}
// 執行 if 判斷
// 空物件
if ([]) {
console.log('執行 if 判斷');
} else {
console.log('執行 else 判斷');
}
// 執行 if 判斷
所有物件皆為真值
if ({a: 1}) {
console.log('執行 if 判斷');
} else {
console.log('執行 else 判斷');
}
// 執行 if 判斷
// 空物件
if ({}) {
console.log('執行 if 判斷');
} else {
console.log('執行 else 判斷');
}
// 執行 if 判斷
因包裹物件為物件形式,而物件為真值所以包裹物件也為真值
雖然 0 為假值,但因包裹物件所以為真值
if (new Number(0)) {
console.log('執行 if 判斷');
} else {
console.log('執行 else 判斷');
}
// 執行 if 判斷
雖然 false 為假值,但因包裹物件所以為真值
if (new Boolean(false)) {
console.log('執行 if 判斷');
} else {
console.log('執行 else 判斷');
}
// 執行 if 判斷
假值大概有以下幾種:
以下列舉幾個當作範例:
if (0) {
console.log('執行 if 判斷');
} else {
console.log('執行 else 判斷');
}
// 執行 else 判斷
if ('') {
console.log('執行 if 判斷');
} else {
console.log('執行 else 判斷');
}
// 執行 else 判斷
if (null) {
console.log('執行 if 判斷');
} else {
console.log('執行 else 判斷');
}
// 執行 else 判斷
if (undefined) {
console.log('執行 if 判斷');
} else {
console.log('執行 else 判斷');
}
// 執行 else 判斷
if (NaN) {
console.log('執行 if 判斷');
} else {
console.log('執行 else 判斷');
}
// 執行 else 判斷
關於真假值圖表可看 JavaScript Equality Table