ECMAScript 2020 如何使用 Optional Chaining 避免 null 和 undefined 的错误

阅读时长 4 分钟读完

在前端开发中,经常会遇到处理 null 或 undefined 值的情况,这些值有可能会导致程序执行时出现错误。好消息是,ECMAScript 2020 中新增了 Optional Chaining(可选链) 运算符,可以帮助我们避免这种错误。

Optional Chaining 是什么?

Optional Chaining 是一种简化处理嵌套对象和数组中的值的语法。它使用 ?. 运算符,可以让我们在不处理 nullundefined 值的情况下,访问对象或数组中的属性或元素。

例如,使用 Optional Chaining 可以避免以下代码中访问 address 对象属性时出现的错误:

用 Optional Chaining 写等效代码如下:

如果 user 对象不存在 address 属性,则 city 变量的值为 undefined,而不是引发错误。

如何使用 Optional Chaining?

Optional Chaining 是一种表达式运算符,可以对任何引用类型的值使用。语法为 ?.,后面紧跟着属性或元素的名称或下标。

下面是在访问对象属性和元素时使用 Optional Chaining 的示例:

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

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

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

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

在上面的代码中,无论 obj 对象是否存在 prop1prop2prop3 属性,都不会出现错误。如果属性不存在,则返回 undefined

如何处理 Optional Chaining 的返回值?

通过 Optional Chaining 运算符获取的属性或元素的值要么是 undefined,要么是实际的值。在处理 Optional Chaining 的返回值的时候,我们可以使用默认值,或根据返回值的类型执行不同的处理逻辑。

下面是对 Optional Chaining 返回值进行处理的示例:

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

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

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

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

在上面的代码中,我们使用 || 运算符来提供默认值。当 Optional Chaining 返回 undefined 值时,会返回默认值。

注意事项

使用 Optional Chaining 需要注意以下事项:

  • Optional Chaining 是 ECMAScript 2020 中新增的语法,不是所有浏览器都支持。在使用之前,可以使用 babel 进行转换。
  • Optional Chaining 只能处理 nullundefined 值。如果对象或数组中的值是 0、空字符串或 false,不会触发 Optional Chaining,会直接返回该值。
  • Optional Chaining 只能用于引用类型(如对象、数组、函数等),不能用于基本数据类型(如字符串、数值、布尔值等)。

结论

Optional Chaining 是一种简化处理嵌套对象和数组中的值的语法。使用 Optional Chaining,可以避免访问属性或元素时出现的错误。在处理 Optional Chaining 的返回值时,可以使用默认值,或根据返回值的类型执行不同的处理逻辑。

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

纠错
反馈