wwwwwllllk 发表于 2022-11-5 16:50:30

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

本帖最后由 wwwwwllllk 于 2022-11-5 18:21 编辑

> 本帖最后由 wwwwwllllk 于 2022-11-5 18:20 编辑

## 可选链运算符(?.)

```
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 ?? '张三'// 张三
```

李恒道 发表于 2022-11-5 17:24:42

空值合并运算符(?.)是??吧

wwwwwllllk 发表于 2022-11-5 18:20:14

李恒道 发表于 2022-11-5 17:24
空值合并运算符(?.)是??吧

写错了,重新改一下

极品小猫 发表于 2022-11-6 14:46:11

自从挨打后,我再也不这样子写了

wwwwwllllk 发表于 2022-11-6 17:02:40

极品小猫 发表于 2022-11-6 14:46
自从挨打后,我再也不这样子写了

为什么会挨打

Vikrant 发表于 2022-11-7 12:06:11

好简洁好优雅啊w~

极品小猫 发表于 2022-11-19 12:07:45

wwwwwllllk 发表于 2022-11-6 17:02
为什么会挨打

你希望简洁优雅,有人希望看得懂~
大概三元运算符和&& || 是极限

wwwwwllllk 发表于 2022-11-19 14:29:43

Vikrant 发表于 2022-11-7 12:06
好简洁好优雅啊w~

确实,哥哥说的有道理。。。。。
页: [1]
查看完整版本: 可选链运算符(?.)和空值合并运算符(??)的使用