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

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

Optional Chaining

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

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

const person = {
  name: 'John',
  address: {
    city: 'New York',
    country: 'USA'
  }
};

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

const city = person.address.city;

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

const city = person?.address?.city;

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

Nullish Coalescing Operator

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

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

const count = null;

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

const result = count || 0;

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

const result = count ?? 0;

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

总结

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

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

const person = {
  name: 'John',
  address: {
    city: 'New York',
    country: 'USA'
  }
};

const city = person?.address?.city ?? 'unknown';
const count = null;

const result1 = count || 0;
const result2 = count ?? 0;

console.log(city); // 输出:New York
console.log(result1); // 输出:0
console.log(result2); // 输出:0

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

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


纠错
反馈