今天读代码时遇到之前没注意过的??运算符,查资料时顺藤摸瓜找到了??=,顺便归纳下之前遇到过的?.
参考
非空运算符??
- 如果
??左边参数不是 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