常見的數(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 不會報錯,
null.length 會報錯
undefined.length 會報錯
// 非空數(shù)組數(shù)據(jù)結(jié)構(gòu)示例
let obj = {
testArr: [1,2,3,4,5],
testObj: {age: 15},
}
if(obj.testArr.length > 0) {
// 運行正常,不會報錯
}
// 空數(shù)組數(shù)據(jù)結(jié)構(gòu)示例
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
}
假如接口返回的數(shù)據(jù)結(jié)構(gòu)如上obj,其中某個array類型的字段(testArr)有可能為null的情況直接用obj.testArr.length > 0會報錯
if(obj.testArr.length > 0) {
}
可以用下面代碼優(yōu)化,如果obj.testArr為null或者undefined直接判斷為false
if(!!obj.testArr && obj.testArr.length > 0) {
}