記一個(gè)常用操作: ?? 邏輯空合并運(yùn)算符
/*
* 邏輯空處理,防止接口將null當(dāng)成字符串處理 @obj
* 【??】 邏輯空合并操作符染乌,只會(huì)對(duì) null 和 undefined 進(jìn)行判斷俺榆,
* 不對(duì)其他Falsy值(比如 0、false粒蜈、''顺献、NaN: 非數(shù)值(Not-a-Number))生效
*/
nullToEmpty(obj) {
let n = {};
for (let i in obj) {
n[i] = obj[i] ?? "";
}
return n;
},
在JavaScript中,F(xiàn)alsy 值是指在條件判斷時(shí)會(huì)被當(dāng)作 false
的值枯怖。以下是JavaScript中被視為 Falsy 值的一些情況:
-
false
: 布爾值false
-
0
: 數(shù)值0
-
''
: 空字符串 null
undefined
-
NaN
: 非數(shù)值(Not-a-Number)
當(dāng)條件判斷時(shí)注整,如果一個(gè)值為以上列出的任何一個(gè),它會(huì)被當(dāng)作 false
度硝,其他情況則被當(dāng)作 true
肿轨。這些值被稱(chēng)為 Falsy 值,因?yàn)樗鼈冊(cè)跅l件判斷中的行為類(lèi)似于布爾值 false
塘淑。
舉個(gè)例子萝招,以下的條件判斷中,如果變量 x
的值是 Falsy 值存捺,條件判斷會(huì)認(rèn)為 x
是 false
槐沼,否則會(huì)認(rèn)為 x
是 true
:
if (x) {
// 如果 x 是非 Falsy 值
} else {
// 如果 x 是 Falsy 值
}
可選鏈操作符(?.)
res.result?.total == 0
// 這是一個(gè)可選鏈操作符(?.)的用法曙蒸。首先,它檢查res.result是否存在(不是null或undefined)岗钩。如果res.result存在纽窟,那么表達(dá)式會(huì)繼續(xù)執(zhí)行total == 0,檢查res.result對(duì)象的total屬性是否等于0兼吓。如果res.result不存在(比如是null或undefined)臂港,則整個(gè)可選鏈表達(dá)式的結(jié)果為undefined,并且在條件判斷中會(huì)被視為假视搏。