今天读代码时遇到之前没注意过的??
运算符,查资料时顺藤摸瓜找到了??=
,顺便归纳下之前遇到过的?.
参考
非空运算符??
- 如果
??
左边参数不是 null/undefined,将返回左边参数,否则返回右边参数。 - 例子:
1
2null ?? 5 // => 5
3 ?? 5 // => 3 ??
被称为 非空运算符/空值合并运算符,增加了真正检查空值
而不是假值
的能力- JS 中
假值
:空对象null
、空数字NaN
、数值0
、未定义undefined
、空字符串''
、布尔false
(有意思,除symbol外的值类型都有假值
) 空值
:null
、undefined
- JS 中
- 使用场景:用于检查一个变量是否为空——即它是
undefined
/null
,例如变量什么时候可以有一个空字符串或一个假值。此时就需要??
逻辑赋值运算符??=
链判断运算符?.
- 用
a?.length
来判断。只有a存在时才会走后面的length,完美避开a为null还去找长度而报错的情况 - 如果
a
不存在(undefined
)/为null
,则a?.length
将返回undefined
a?.length
其实就相当于a && a.length