ES12 中的空值合并运算符详解

阅读时长 3 分钟读完

在 JavaScript 中,对于未定义、 null 和空字符串等空值所涉及到的处理,一度令开发者头疼不已。为了解决这个问题,ES12 中引入了空值合并运算符,可以方便地处理这些空值。

什么是空值合并运算符?

空值合并运算符(nullish coalescing operator)是 ES12 中新增的一种运算符,用于简化处理空值的场景。其表示为 ??。它的作用是如果该运算符左侧的操作数是 null 或 undefined,则返回右侧操作数,否则返回该运算符左侧操作数。

空值合并运算符的使用

下面我们来看一下它的使用示例:

-- -------------------- ---- -------
----- - - --------- -- ----------
--------------- -- ---------

----- - - ---- -- ----------
--------------- -- ---------

----- - - ----- -- ----------
--------------- -- -----

----- - - -- -- ----------
--------------- -- --

在第一个示例中,由于 x 的左侧是 undefined,所以最终的结果为右侧字符串 'default'。而在第二个示例中,由于 y 的左侧是 null,同样返回右侧的 'default' 。对于布尔值和空字符串,它们不属于空值,因此 zm 都返回自身的值,即 false 和 ''。

空值合并运算符与逻辑或运算的区别

ES6 中的逻辑或运算符(||)也可以实现类似的功能,实际上二者的效果很相似。例如:

-- -------------------- ---- -------
----- - - --------- -- ----------
--------------- -- ---------

----- - - ---- -- ----------
--------------- -- ---------

----- - - ----- -- ----------
--------------- -- ---------

----- - - -- -- ----------
--------------- -- ---------

在本例中,由于 undefinednullfalse 和空字符串都是假值(falsy),所以逻辑或运算符都会返回其右侧的默认值 'default'。然而,在某些情况下二者的表现是不同的。例如:

-- -------------------- ---- -------
----- - - --
----- - - -----
----- - - ---

----- - - - -- - -- --
--------------- -- --

----- - - - -- - -- --
--------------- -- -

在这个例子中,变量 a 的值为 0,因为 0 也是假值,所以逻辑或运算符会继续往后检查下一个变量,也就是 b。由于 b 的值是 null,因此逻辑或运算符会返回空字符串。而空值合并运算符则会返回左侧变量 a 的值,即 0。

小结

通过对 ES12 中空值合并运算符的讲解,我们可以得出以下结论:

  • 空值合并运算符的作用是返回左侧操作数,如果该操作数是 null 或 undefined,则返回右侧操作数。
  • 空值合并运算符的使用可以简化处理空值的场景。
  • 在进行多个值判断的情况下,空值合并运算符的表现和逻辑或运算符有所不同。

最后,我们再来说一下空值合并运算符的使用建议。由于小心谨慎永远是最明智的策略,我们在使用空值合并运算符时,一定要注意审查代码逻辑,确保使用正确。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/670920aad91dce0dc876ab58

纠错
反馈