返回

探秘ES2020可选项链式操作符(?.):解放冗余前置校验

前端

理解可选项链式操作符(?.)

可选项链式操作符(?.)又称“安全导航操作符”,它的主要目的是为了安全地访问对象中的属性,避免因对象属性不存在而引起的错误。在传统操作符的应用中,当需要访问嵌套在对象内部好几层的属性时,我们往往需要做大量类似繁琐的前置校验,以避免程序崩溃。而可选项链式操作符的出现,让我们从此告别了这些冗余的操作,大大简化了代码。

可选项链式操作符(?.)的应用

可选项链式操作符(?.)的应用非常广泛。在任何需要安全访问对象属性的场景中,它都是理想之选。让我们来看几个具体的应用示例:

  • 访问嵌套属性

在传统操作符的应用中,想要访问嵌套属性,需要进行冗余的前置校验,例如:

const person = {
  name: "John Doe",
  address: {
    street: "123 Main Street",
    city: "Anytown",
    state: "CA",
  },
};

// 传统操作符的应用
if (person && person.address && person.address.city) {
  console.log(person.address.city);
}

有了可选项链式操作符(?.),我们可以简化代码,直接访问嵌套属性:

const person = {
  name: "John Doe",
  address: {
    street: "123 Main Street",
    city: "Anytown",
    state: "CA",
  },
};

// 可选项链式操作符(?.)的应用
console.log(person?.address?.city);

  • 访问不存在的属性

当访问不存在的属性时,传统操作符会报错。而可选项链式操作符(?.)会返回undefined,避免错误的发生,例如:

const person = {
  name: "John Doe",
};

// 传统操作符的应用
console.log(person.age); // 报错

// 可选项链式操作符(?.)的应用
console.log(person?.age); // undefined

可选项链式操作符(?.)的优势

可选项链式操作符(?.)带来了诸多优势,使得代码更加简洁、高效和安全:

  • 简洁性 :可选项链式操作符(?.)简化了代码,避免了冗余的前置校验,使代码更加简洁、易读。
  • 高效性 :可选项链式操作符(?.)提高了代码的执行效率,因为它避免了不必要的属性访问,减少了程序运行时间。
  • 安全性 :可选项链式操作符(?.)增强了代码的安全性,因为它避免了因对象属性不存在而引起的错误,提高了程序的稳定性。

结语

ES2020中的可选项链式操作符(?.)是编程世界的一项重大变革,它极大程度地简化了代码,提高了代码的执行效率和安全性。它标志着JavaScript语言在安全性、可靠性和易用性方面又迈出了重要一步。随着可选项链式操作符(?.)的广泛应用,我们将看到更多简洁、高效和安全的代码,从而使编程更加轻松、愉快。