ES11 (2020) 中的可选链操作符:避免代码崩溃的利器

阅读时长 3 分钟读完

前言

在日常的前端开发中,我们经常会遇到访问对象内部属性或方法时出现 undefinednull 的情况,导致程序抛出异常。此时,我们需要显式地判断变量是否存在,进而进行处理。但是,这种处理方式会使代码变得冗长,而可选链操作符则为我们提供了更为简洁的处理方式。

什么是可选链操作符?

可选链操作符(Optional Chaining Operator)是 ES2020 中引入的新特性。它允许我们在访问对象属性时,当对象的某一层不存在时,直接得到 undefined 而不是抛出异常。

可选链操作符的语法是 ?.,可以在对象属性、方法、数组元素等地方使用。

可选链操作符的使用

访问对象属性

在旧有的写法中,我们通常会这样判断对象属性是否存在:

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

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

上面的代码中,我们先判断 obj.foo 是否存在,再判断 obj.foo.bar 是否存在。这种写法虽然可行,但是代码量比较冗长,可选链操作符就能够解决这个问题:

上面的代码用 ?. 操作符的方式,直接访问对象属性,当 obj.foo 不存在时将直接返回 undefined

访问对象方法

对于对象方法的调用,同样可以使用可选链操作符来避免代码崩溃的情况。

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

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

上述代码中,通过 ?. 操作符调用对象方法 bar。如果 foo 对象不存在,该语句不会报错,相当于在 foo 上调用不存在的方法一样。

访问数组元素

在访问数组元素的时候,同样可以使用可选链操作符来简化代码:

上述代码中,在下标越界的情况下, arr[3]undefined,此时程序不会抛出异常,而是直接返回 undefined

可选链操作符的嵌套使用

当我们需要访问对象深层嵌套的属性时,传统的判断方式会显得十分冗长。而使用可选链操作符可以有效地解决这个问题。

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

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

我们可以直接使用 ?. 操作符进行访问,如果存在嵌套的属性或方法都会被逐一判断。

经验谈

使用可选链操作符可以更加方便地避免代码崩溃带来的问题,但是它并不能完全替代条件判断。在实际使用过程中,我们还需要结合需求进行判断,决定使用可选链操作符或条件判断的方式。

总结

在本文中,我们对可选链操作符进行了详细的介绍,包括了它的语法和具体的使用场景。同时,我们还聚焦于可选链操作符在对象和数组元素访问中的应用,来帮助读者更好地理解和掌握可选链操作符。

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

纠错
反馈