布尔值代表“真”和“假”两个状态。“真”用关键字true
表示,“假”用关键字false
表示。布尔值只有这两个值。
如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false
,其他值都视为true
。
undefined
null
false
0
NaN
""
或''
(空字符串)
let a = ""
//代码正确,判断a是否空串
if (a) {
console.log('有值')
} else {
console.log('空串')
}
let arr = []
let obj = {}
//下面的代码是错误的
if (arr) {
console.log('有元素')
} else {
console.log('无元素')
}
if (obj) {
console.log('有属性')
} else {
console.log('无属性')
}
注意,空数组(
[]
)和空对象({}
)对应的布尔值,都是true
。
正确的判断方法如下:
let arr = []
let obj = {}
if (arr instanceof Array && arr.length == 0) {
console.log('空数组')
} else {
console.log('有元素')
}
if (obj instanceof Object && obj.keys.length == 0) {
console.log('无属性')
} else {
console.log('有属性')
}