ES2020 引入了由双问号 ?? 表示的空值合并运算符。空值合并运算符是一个接受两个值的逻辑运算符:
从技术上讲,空值合并运算符等效于以下语句:
此示例返回 28,因为第一个值是undefined:
结果是 1,而不是 0,这是您可能想不到的。
空值合并运算符可帮助您避免这种陷阱。当第一个值是null 或者 undefined 时,它只返回第二个值。
跟逻辑或和与运算符类似,如果第一个操作数不是undefined 或者是 null ,空值合并运算符也不计算第二个值。
以下示例评估第二个表达式,因为第一个表达式是 undefined:
如果将逻辑 AND 或 OR 运算符直接与空值合并运算符组合使用,则会出现 SyntaxError,如下所示:
但是,您可以将运算符 ?? 左侧的表达式括在括号中指定运算符优先级来避免此错误:
空值合并运算符 ?? 是一个逻辑运算符,它接受两个值并在第一个值是 null 或者 undefined 时返回第二个值。
空值运算符被短路,不能直接与逻辑 AND 或 OR 运算符组合使用。
