常见的数据类型转布尔
0和NaN false 其他Number类型为true
undefined false
null false
'' false 非空String类型为true,空string为false
{} true 注意:空对象和非空对象都为true
[] true 注意:空数组和非空数组都为true
[].length 0 不会报错,
null.length 会报错
undefined.length 会报错
// 非空数组数据结构示例
let obj = {
testArr: [1,2,3,4,5],
testObj: {age: 15},
}
if(obj.testArr.length > 0) {
// 运行正常,不会报错
}
// 空数组数据结构示例
let obj = {
testArr: null,
testObj: {age: 15},
}
if(obj.testArr.length > 0) {
// 会提示类似报错 Uncaught TypeError: Cannot read properties of null (reading 'length') at <anonymous>:1:6
}
假如接口返回的数据结构如上obj,其中某个array类型的字段(testArr)有可能为null的情况直接用obj.testArr.length > 0会报错
if(obj.testArr.length > 0) {
}
可以用下面代码优化,如果obj.testArr为null或者undefined直接判断为false
if(!!obj.testArr && obj.testArr.length > 0) {
}