返回

ES2020 让代码更优美的运算符 (?.) (??) 😍✨

前端

ES2020 的代码美化运算符:?. 和 ??

在 ES2020 中,引入了两个新的运算符:?. 和 ??,它们可以帮助我们编写更优美、更简洁的代码。

1. ?. 运算符 - 可选链操作符

?. 运算符又称为可选链操作符。它允许我们在不检查对象是否存在的情况下访问对象的属性。如果对象存在,则返回属性的值;如果对象不存在,则返回 undefined。

例如,我们有如下代码:

const user = {
  name: "John Doe",
  address: {
    city: "New York",
    state: "NY",
  },
};

// 使用传统的写法来访问对象的属性
console.log(user.address.city); // "New York"

// 使用可选链操作符来访问对象的属性
console.log(user?.address?.city); // "New York"

// 如果对象不存在或属性不存在,则返回 undefined
const nonExistingUser = null;
console.log(nonExistingUser?.address?.city); // undefined

2. ?? 运算符 - 空值合并运算符

?? 运算符又称为空值合并运算符。它允许我们在两个值之间进行比较,并返回第一个非空值。如果两个值都为空,则返回最后一个值。

例如,我们有如下代码:

const name = null;
const defaultName = "John Doe";

// 使用传统的写法来处理空值
const fullName = name || defaultName;

// 使用空值合并运算符来处理空值
const fullName = name ?? defaultName;

console.log(fullName); // "John Doe"

使用 ? . 和 ?? 运算符的优势

使用 ?. 和 ?? 运算符可以带来以下优势:

  • 提高代码的可读性和可维护性 :这两个运算符使代码更加简洁、易读和易维护。
  • 减少代码的嵌套和分支 :这两个运算符可以帮助我们减少代码的嵌套和分支,使代码更加清晰。
  • 提高代码的性能 :这两个运算符可以减少不必要的属性访问和函数调用,从而提高代码的性能。

总之,ES2020 中引入的 ?. 和 ?? 运算符是两个非常有用的运算符,它们可以帮助我们编写更优美、更简洁、更可读、更易维护和更具性能的代码。