常見的數(shù)據(jù)類型轉(zhuǎn)布爾
0和NaN false 其他Number類型為true
undefined false
null false
'' false 非空String類型為true遏佣,空string為false
{} true 注意:空對象和非空對象都為true
[] true 注意:空數(shù)組和非空數(shù)組都為true
[].length 0 不會(huì)報(bào)錯(cuò),
null.length 會(huì)報(bào)錯(cuò)
undefined.length 會(huì)報(bào)錯(cuò)
// 非空數(shù)組數(shù)據(jù)結(jié)構(gòu)示例
let obj = {
testArr: [1,2,3,4,5],
testObj: {age: 15},
}
if(obj.testArr.length > 0) {
// 運(yùn)行正常揽浙,不會(huì)報(bào)錯(cuò)
}
// 空數(shù)組數(shù)據(jù)結(jié)構(gòu)示例
let obj = {
testArr: null,
testObj: {age: 15},
}
if(obj.testArr.length > 0) {
// 會(huì)提示類似報(bào)錯(cuò) Uncaught TypeError: Cannot read properties of null (reading 'length') at <anonymous>:1:6
}
假如接口返回的數(shù)據(jù)結(jié)構(gòu)如上obj状婶,其中某個(gè)array類型的字段(testArr)有可能為null的情況直接用obj.testArr.length > 0會(huì)報(bào)錯(cuò)
if(obj.testArr.length > 0) {
}
可以用下面代碼優(yōu)化,如果obj.testArr為null或者undefined直接判斷為false
if(!!obj.testArr && obj.testArr.length > 0) {
}