jsts可选链操作符 ?. 跟 空值合并操作符 ?? 运算符的使用,简化三元语句默认值与防止对象空值引用

tech2023-01-19  114

写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)//10 console.log(d)//""

空值合并运算符??只针对null和undefined,而||是判断假值

最新回复(0)