数据 | Boolean() | 备注 | console.log ( == 1/true) | 备注 | console.log ( == 0/false) | 备注 |
0 | false |
| false | true | ||
1 | true |
数字的布尔值为 true | true |
| false | |
10 | false | |||||
"0" | true |
非空字符串 布尔值为 true | true |
| ||
"1" | true |
字符串中只有 "1" 可转换为 1/ true | false | |||
"10" | false | |||||
"abc" | ||||||
" " | false |
| true | 空字符串可转换为 0/ false | ||
undefined | false | |||||
null | ||||||
NaN | ||||||
Object | true |
任何对象 布尔值为 true | ||||
Array |
| |||||
[] | true | 空数组的布尔值为 true | true | 空数组可转换为 0/ false | ||
{} | true | 空对象的布尔值为 true | false | 空对象不能转换为 0/ false | ||
Infinity | true | |||||
-Infinity | true | |||||
-1 | true | 非 0 数字的布尔值为 true | false |
总结
布尔值为 false 的只有 6 种: false, 0, "" / '', undefined, null, NaN
任何其他类型的布尔值均为 true
布尔运算中, 并不是所有 true 值都相等, 也不是所有 false 值都相等
在 console.log (A == 1/ true) 的比较运算中:
- 1 == true // true
- "1" == true // true
- "abc" == true// false 除了 "1" 之外的非空字符串, 不能转换为 1
在 console.log (A == 0/ false) 的比较运算中:
- 0 == false // true
- "0" == false // true
- " " == false // true 空字符串可转换为 0
- "abc" == false // false 除了 "0" 之外的非空字符串, 不能转换为 0
- [ ] == false // true 空数组可转换为 0
- { } == false // false 空对象不能转换为 0
在 console.log ( A == B) 的比较运算中:
- undefined == null // true
- undefined == undefined // true
- null == null // true
- 除了以上情况, undefined 和 null 与任何其他类型的数据比较, 结果都为 false
- Infinity == Infinity // true
- -Infinity == -Infinity // true
- NaN 与任何数据类型比较结果都为 false, 包括 NaN 本身
在 console.log (A === B) 的比较计算中:
- undefined === null // true
- undefined === undefined // true
- null === null // true
- Infinity === Infinity // true
- -Infinity === -Infinity // true