写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,而||是判断假值