奇怪的语法,`?.` 在 JavaScript 中是什么意思?


让我们尝试通过一个例子来理解‘?.’。

考虑以下对象示例,描述了一个 23 岁的男性人类 −

const being = {
   human: {
      male: {
         age: 23
      }
   }
};

现在让我们假设我们要访问这个 being 对象的 age 属性。很简单,对吧?我们只需使用链式操作来访问,就像下面的代码一样 −

示例

const being = {
   human: {
      male: {
         age: 23
      }
   }
};
console.log(being.human.male.age);

输出

控制台输出如下 −

23

现在假设出于某些技术原因,你将 being对象的 male 属性更改为 female 或其他内容。

现在,我们的链式语句会发生什么,它将产生一个 typeError,指出无法访问 human 的未定义属性。在这种情况下,有没有办法让我们的代码不抛出任何错误。是的,这正是‘?.’也就是可选链接来拯救我们的地方。

可选链式非常简单,在正常情况下它表现得像正常的链式,但是当我们尝试访问未定义的任何属性时,它不会让我们的代码抛出一个错误,而是立即终止链式并返回未定义,以便剩下的代码块正常运行。

考虑我们上一个例子(可选链式) −

示例

const being = {
   human: {
      male: {
         age: 23
      }
   }
}
console.log(being?.human?.female?.age);

输出

输出不会抛出错误,而是 −

undefined

更新于:18-8-2020

1000+ 浏览次数

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告