写js代码的时候经常会遇到下面这种情况
 
if(a
&&a
.b
&&a
.b
.c
)
 
其实想要判断的值明明只有a.b.c一个却因为防止空值报错不得不一个一个判断,这个时候就可以用 ?. 来代替
 
if(a
?.b
?.c
)
 
还有传值的时候为了保证数据格式的准确,经常会加一个默认值
 
c 
= a
?a
:b
 
这种情况下用 ?? 就可以实现同样的效果
 
c 
= a
??b
 
补充说明,?? 跟|| 逻辑运算符的区别,这里引用一下官方的例子
 
let a 
= ""
let b 
= 10
let c 
= a 
|| b
let d 
= a 
?? b
console
.log(c
)
console
.log(d
)
 
空值合并运算符??只针对null和undefined,而||是判断假值