ECMAScript 2017 (ES8) 中的空值合并操作符
在 ES6 之前,当我们需要检查一个变量是否有值或者是否为 null 或 undefined 时,我们通常使用短路运算符 ||。这种方法非常普遍,但是有一个很常见的问题就是如果值为 0 或 ""(空字符串)时,会被错误地计算为 false。
为了解决这个问题,ECMAScript 2017 (ES8) 引入了一个新的空值合并操作符(nullish coalescing operator),可以简化这个判断的过程。
语法
空值合并操作符是一个双问号 (??)。
expression1 ?? expression2
解释:如果 expression1
有值,就返回 expression1
的值。否则返回 expression2
的值。
示例
下面我们对比使用 || 运算符和 ?? 运算符,来看一下空值合并操作符的实际应用场景。
使用 || 运算符:
-- -------------------- ---- ------- -- ----- -------- -------------- - ----- ------ - - -- ---------- -------------------- - ------------------------- -- ----------- --------------- -- --------- ------------------ -- --------- ----------------------- -- --------- ------------------- -- --------- -- ----- -------- -------------- - ----- ------ - - -- ---------- -------------------- - -------------- -- ---------
使用 ?? 运算符:
-- -------------------- ---- ------- -- ----- -------- -------------- - ----- ------ - - -- ---------- -------------------- - ------------------------- -- ----------- --------------- -- - ------------------ -- --------- ----------------------- -- --------- ------------------- -- ----- -- ----- -------- -------------- - ----- ------ - - -- ---------- -------------------- - -------------- -- ---------
可以看到,使用空值合并操作符,我们可以明确地指定什么情况下使用默认值,即在传递了一个 falsy 值(null、undefined、0、""、false)时,返回默认值。
需要注意的是,空值合并操作符是在 ES8 中引入的新特性,因此在某些浏览器中可能会不被支持。
结论
空值合并操作符是一种新的语法糖,可以帮助我们更方便地处理空值的问题,同时也更清晰地指定了何时使用默认值。使用前需要注意浏览器的支持情况,一般来说我们可以使用 @babel/plugin-proposal-nullish-coalescing-operator 来编译这些语法,或者使用使用 Polyfill 对其进行垫片处理。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66f3b3cdf40ec5a964e4632c