ES2020(ECMAScript 2020):optional chaining 和 nullish coalescing operator

阅读时长 4 分钟读完

JavaScript 是一门非常灵活的语言,但也因此存在一些让人感到困惑的语言特性。ES2020(ECMAScript 2020)引入了两个新的语言特性:optional chaining 和 nullish coalescing operator,这两个特性可以帮助开发者更加方便地处理 JavaScript 中的一些常见问题。

Optional Chaining

Optional chaining 是一个新的语言特性,它允许开发者在访问对象属性或者方法时,可以不必担心对象是否存在。在 JavaScript 中,如果我们访问一个不存在的属性或者方法,通常会导致一个错误。但是,使用 optional chaining,我们可以避免这种错误的发生。

下面是一个例子,假设我们有一个对象 person,它有一个属性 address,而 address 又有一个属性 city

如果我们想要获取 person 的城市,我们可以使用以下代码:

这段代码的问题在于,如果 person 对象不存在,或者 address 对象不存在,那么这段代码会导致一个错误。使用 optional chaining,我们可以避免这个问题:

在这段代码中,我们使用了 ?. 运算符来访问 person 对象的 address 属性和 city 属性。如果 person 对象不存在,或者 address 对象不存在,这段代码不会导致错误,而是返回 undefined

Nullish Coalescing Operator

nullish coalescing operator 是另一个新的语言特性,它可以帮助开发者更加方便地处理 JavaScript 中的 null 或 undefined 值。在 JavaScript 中,如果一个变量的值为 null 或 undefined,通常我们会使用条件语句来处理这种情况。但是,使用 nullish coalescing operator,我们可以更加简洁地处理这种情况。

下面是一个例子,假设我们有一个变量 count,它的值可能是 null 或者 undefined:

如果我们想要将这个变量的值设置为一个默认值,我们可以使用以下代码:

在这段代码中,我们使用了逻辑或运算符来判断 count 变量的值是否为 null 或 undefined。如果是,我们将 result 变量的值设置为 0。但是,这段代码有一个问题:如果 count 的值为 0,那么这个判断会出现错误。使用 nullish coalescing operator,我们可以避免这个问题:

在这段代码中,我们使用了 nullish coalescing operator 来判断 count 变量的值是否为 null 或 undefined。如果是,我们将 result 变量的值设置为 0。如果 count 的值为 0,那么这个判断也不会出现错误。

总结

ES2020(ECMAScript 2020)引入了两个新的语言特性:optional chaining 和 nullish coalescing operator。这两个特性可以帮助开发者更加方便地处理 JavaScript 中的一些常见问题。在使用这些特性时,需要注意它们的一些细节,以避免出现错误。

下面是一个完整的例子,展示了如何使用 optional chaining 和 nullish coalescing operator:

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

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

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

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

以上就是本文对于 ES2020(ECMAScript 2020):optional chaining 和 nullish coalescing operator 的详细介绍,希望对于读者有所帮助。

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

纠错
反馈