js隐式转换,js常见的数据类型转布尔,字符串转布尔值,null、undefined是true还是false?null、undefined转布尔值

常见的数据类型转布尔

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) {

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容