空值合并运算符 ‘??’
是什么
-
是javaScript新增的运算符
-
空值合并运算符(nullish coalescing operator)的写法为两个问号
??
a ?? b
的结果是:- 如果
a
是已定义的,则结果为a
, - 如果
a
不是已定义的,则结果为b
。
换句话说,如果第一个参数不是
null/undefined
,则??
返回第一个参数。否则,返回第二个参数。 - 如果
我们换成三元运算符的使用逻辑重写result = a ?? b
来进一步了解
result = (a !== null && a !== undefined) ? a : b
为什么
- 为了弥补||运算符的缺陷
||
和??
的重要区别是:
||
返回第一个 真 值。??
返回第一个 已定义的 值。
换句话说,||
无法区分 false
、0
、空字符串 ""
和 null/undefined
。它们都一样 —— 假值(falsy values)。如果其中任何一个是 ||
的第一个参数,那么我们将得到第二个参数作为结果。
不过在实际中,我们可能只想在变量的值为 null/undefined
时使用默认值。也就是说,当该值确实未知或未被设置时。
例如,考虑下面这种情况:
let height =