在 ECMAScript 2020 中使用 Optional Chain 和 Nullish Coalescing Operator 提升代码可读性

在现代的前端开发中,我们经常需要处理可能为空的值。在 JavaScript 中,使用 nullundefined 表示“没有值”,这给程序员带来了许多麻烦,尤其是在处理嵌套的对象或数组时。ECMAScript 2020 引入了两个新的运算符 Optional ChainNullish Coalescing Operator,可以大大简化处理这些场景的代码,并提高代码可读性。

Optional Chain 运算符

ECMAScript 2020 引入的 Optional Chain 运算符 ?. 可以用来简化访问嵌套属性或方法的过程。以往,我们通常需要使用繁琐的 if 语句来判断中间的属性或方法是否为空,如下所示:

上述代码中,我们首先需要判断 obj 是否为空,然后再判断 prop1 是否为空,以此类推。这个过程非常冗长并且可读性较差。

而使用 Optional Chain 运算符后,我们可以通过一条语句来判断整个链路上的属性和方法是否为空。示例如下:

上述代码中,如果 obj 为空或者后续属性或方法中的任何一个为空,整个语句都会返回 undefined,不会抛出异常。这大大简化了代码,并提高了可读性。

Nullish Coalescing Operator 运算符

除了 Optional Chain 运算符,ECMAScript 2020 还引入了 Nullish Coalescing Operator 运算符 ??,用于处理值为 nullundefined 的情况。以往,我们通常使用逻辑或运算符 || 来处理这种情况,如下所示:

上述代码中,如果 obj.prop1.prop2.prop3nullundefined,那么整个语句将返回 'default'

但是,逻辑或运算符有一个不足之处。当值为 0 或者空字符串时,逻辑或运算符会将其视为“假”值,从而返回默认值。而在许多情况下,我们需要明确区分 0 或者空字符串和 null 或者 undefined

而使用 Nullish Coalescing Operator 运算符后,我们可以明确地判断值是否为空。示例如下:

上述代码中,如果 obj.prop1.prop2.prop3null 或者 undefined,那么整个语句将返回 'default'。如果 obj.prop1.prop2.prop30、空字符串或任何其他“假”值,整个语句将返回 0、空字符串或者其他“假”值。

总结

ECMAScript 2020 引入的 Optional Chain 和 Nullish Coalescing Operator 运算符在处理可能为空的值时非常有用。使用 Optional Chain 运算符我们可以避免冗长的判断语句,提高代码可读性;使用 Nullish Coalescing Operator 运算符我们可以明确地判断值是否为空,避免将 0 或者空字符串误判为“假”值。下面是两个示例代码:

通过学习这些新的 ECMAScript 2020 运算符,我们可以更加高效地处理“没有值”的情况,让代码更加简洁、优雅。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65865201d2f5e1655d0c4941


纠错
反馈