【记录每日工作小问题】使用JS的操作符(?? 和 ?.)

161 阅读1分钟

空值合并操作符(??)

  • 功能:只有左侧表达式的值为 null 或者 undefined 时,才会返回右侧的值,否则返回左侧的表达式的值
console.log('可乐' ?? '虾皮')        // 可乐
console.log(123 ?? '虾皮')          // 123
console.log(true ?? '虾皮')         // true
console.log('' ?? '虾皮')           // 
console.log(0  ?? '虾皮')           // 0
console.log(null ?? '虾皮')         // 虾皮
console.log(undefined ?? '虾皮')    // 虾皮

可选链操作符(?.)

  • 功能:可选链操作符( ?. )允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效(在引用为空(nullish ) (null 或者 undefined) 的情况下不会引起错误)

//普通写法
if(res&&res.data&&res.data.obj){}
if(res&&res.data&&res.data.array&&res.data.array.length){}

//链式写法
if(res?.data?.obj){ // 判断data中是否有obj属性 并且非null非undefined }
if(res?.data?.array?.length){ // 判断data中是否有array且存在长度}