ES10 之变量定义新语法

ES10 新增了一种变量定义语法:letconst 支持在块级作用域之内使用 {}+ 运算符定义变量。这种语法称为“可选链式语法”。

什么是“可选链式语法”?

在 ES10 之前,我们定义变量时通常采用以下语法:

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

如果 myObjectnullundefined,那么该语句会抛出一个类型错误。为了避免这种错误,我们通常会添加一些条件代码进行判断:

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

这种代码比较冗长,而且容易出错。ES10 新引入的可选链式语法就是为了解决这个问题。

使用可选链式语法,上述代码可以简化为:

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

如果 myObjectnullundefined,则 myVariable 的值为 undefined,而不是抛出类型错误。

如何使用可选链式语法?

可选链式语法支持在任何标识符后面添加一个问号 ?,表示如果该标识符的值为 nullundefined,则后面的属性访问不执行,并返回 undefined

例如:

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

上述代码中,如果 myObject 或者 myObject.myProperty 的值为 nullundefined,则 myMethod 方法不会执行,myVariable 的值为 undefined

同时,可选链式语法也支持访问数组元素:

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

上述代码中,如果 myArray 或者 myArray[1] 或者 myArray[1][2] 的值为 nullundefined,则 myVariable 的值为 undefined

可选链式语法的兼容性

可选链式语法是 ES10 新增的语法,目前还不被所有浏览器支持。不过可以通过 polyfill 或者 Babel 转换来实现兼容。

示例代码

下面是一个简单的可选链式语法示例:

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

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

结论

可选链式语法是 ES10 新增的语法之一,可以方便地避免因为 nullundefined 引起的类型错误。虽然目前不被所有浏览器支持,但通过 polyfill 或者 Babel 转换可以实现兼容。使用可选链式语法可以提高代码的可读性,并降低出错的风险。

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