ECMAScript 2017 (ES8) 中的空值合并操作符

阅读时长 3 分钟读完

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

纠错
反馈