ECMAScript 2020 中的 Optional Chaining 操作符:如何优雅的处理 undefined 和 null

在编写前端代码时,经常需要在获取某个对象的属性或方法前进行判断其是否为 nullundefined,在过去,我们常常使用繁琐、冗长的代码来实现,而在 ES2020 中引入了 Optional Chaining 操作符,可以使代码更加简洁易读,本文将介绍它的语法和使用,以及如何优雅地处理 nullundefined

Optional Chaining 的语法和功能

Optional Chaining 使用问号 ? 来表示,它的作用是在获取一个对象的属性或方法前进行安全判断,如果这个对象不存在,就返回 undefined,而不会导致程序抛出异常,如下所示:

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

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

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

上面的代码中,我们想获取 person 对象中的 job 属性的 company 属性的 name 属性,传统写法需要使用繁琐冗长的判断,而使用 Optional Chaining 可以让代码更加简洁易读,同时避免了因对象不存在而导致的异常。

Optional Chaining 不仅可以用于获取对象属性,还可以用于调用方法或函数,例如:

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

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

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

上面的代码中,我们传统写法中需要使用繁琐的判断,而使用 Optional Chaining 可以让代码更加简洁易读,同时避免了因方法或函数不存在而导致的异常。

处理 null 和 undefined 的技巧

有时候我们需要对一个变量进行 Optional Chaining,但这个变量可能会是 nullundefined,这时我们需要使用一些技巧来处理,例如:

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

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

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

上面的代码中,我们将 person 设置为 null,传统写法中会将 age 的值也设置为 null,而使用 Optional Chaining 则返回 undefined,这时我们就需要多加一些处理,例如使用默认值:

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

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

上面的代码中,我们使用了空值合并运算符 ?? 来为 age3 设置默认值,这样就可以避免出现 undefined 的情况了。

Optional Chaining 的兼容性

由于 Optional Chaining 是 ES2020 中的新特性,在一些旧版本的浏览器中可能会出现兼容性问题,可以使用 babel 等工具将其转换为 ES5 以提高兼容性。

结论

Optional Chaining 是一个非常实用的新特性,可以让我们的代码更加简洁易读,同时避免了因对象不存在而导致的异常,同时我们还介绍了一些处理 null 和 undefined 的技巧,希望本文能够给大家带来帮助。

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