可选链运算符(?.)和空值合并运算符(??)的使用

127 阅读1分钟

可选链运算符(?.)

let obj = null
console.log(obj.name)
// 我们平时在项目中加入后端传入的数据的data有时候是null,然后我们要是对象的时候取对象里面的某一个值
if(obj && obj instanceof Object){
  console.log(obj.name)
}


// 假如用了可选链选择符,我们可以这样写
console.log(obj?.name)


// 上面是为了防止obj为null,undefined的时候, 直接obj.name会报错    如果初始值obj为{},是不会报错的



/*
  数组也是一样
*/
let list;

// 之前我们要这样写
if(list instanceof Array && list.length > 0) {
  list.map((item) => {
    console.log(item)
  })
}


// 现在这样写就好了
list?.map((item) => {
  console.log(item)
})


空值合并运算符(??)

// 我们定义一个值  用||的话前面是0,false,null,undefined都会输出后面的值,但是我只想前面为null,undefined的时候输出后面的值
// 为false,0这些也代表我有值
let name;
// let a = 0 || '哈哈'     // 哈哈
// let b = false || 'hehe'   // hehe
// let c = null || 'heihei' // heihei
// let d = name || '张三'  // 张三


let a = 0 ?? '哈哈'     // 0
let b = false ?? 'hehe'   // false
let c = null ?? 'heihei' // heihei
let d = name ?? '张三'  // 张三