在 JavaScript 中,我们经常需要处理变量为 null 或 undefined 时的情况。在 ES9 中,JavaScript 引入了一个新的运算符 "?? ",也称为真空合并(Null Coalescing),可以轻松地处理这种情况,本文将对其进行详细介绍。
什么是真空合并运算符?
真空合并运算符 "?? "用于查找不存在、未定义或 null 的值。如果左侧操作数为 null 或 undefined,则返回右侧操作数。否则,返回左侧操作数。
以下是真空合并运算符的基本语法:
const result = a ?? b;
在上面的语法中,如果变量 a 为 null 或 undefined,则返回变量 b 的值。否则,返回变量 a 的值。
使用真空合并运算符的优势
使用真空合并运算符,可以避免在处理多层嵌套的对象时遇到的一些问题,例如“Cannot read property 'x' of undefined”。真空合并运算符可以使代码更加简洁,也可以避免大量的 if…else 语句。
以下是使用真空合并运算符的示例代码:
-- -------------------- ---- ------- ----- ------- - ---- -- -------- ----- ------- - --------- -- -------- ----- ------- - ----- -- -------- ----- ------- - - -- -------- --------------------- -- ------- --------------------- -- ------- --------------------- -- ----- --------------------- -- -
在上面的代码中,当变量 result1 和 result2 的值分别赋为 null 和 undefined 时,都将返回右侧的 'Hello'。当变量 result3 和 result4 的值分别为 false 和 0 时,则返回它们自己的值。
真空合并运算符与逻辑或运算符的区别
在处理 null 或 undefined 值时,有些开发人员习惯于使用逻辑或运算符 "|| "。逻辑或运算符是 JavaScript 中一种常用的运算符,左右两侧的操作数都为布尔类型。如果左侧操作数为 true,则返回它的值。否则,返回右侧操作数的值。
以下是逻辑或运算符的基本语法:
const result = a || b;
如果变量 a 不是 null 或 undefined,则返回变量 a 的值。否则,返回变量 b 的值。
与真空合并运算符相比,逻辑或运算符存在一个问题,那就是当变量 a 的值为 false、0 或者空字符串时,依然会返回变量 b 的值。要避免这种情况,我们需要使用额外的代码来检查变量 a 的 truthy 值,这样可以使代码变得冗长而难以维护。
使用真空合并运算符的示例
下面是一个简单的例子,说明如何使用真空合并运算符来简化代码。
-- -------------------- ---- ------- ----- -------- - - ----- ------- -------- - ----- ---- ------ - -- ----- -------- - ----------------------- -- ---------- ---------------------- -- ---- -----
在上面的代码中,我们使用真空合并运算符来检查 userData 对象中的属性。如果对象中的属性不存在,则返回 'Unknown'。如果属性存在,则返回属性的值。
结论
ES9 中的真空合并运算符使得处理 null 或 undefined 值的代码更加简洁易懂。尽管与逻辑或运算符相比,真空合并运算符的语法略有不同,但在处理特定情况时,它可以提供更好的解决方案,使代码变得更加简洁和易维护。我们应该适当使用真空合并运算符来优化代码。
参考
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/672b10c2ddd3a70eb6d18795