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

javascriptweb developmentobject oriented programming

让我们试着用一个例子来理解"?."。

考虑以下对象示例,描述年龄 23 岁及以上的男性

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

现在假设我们想要访问这个 being 对象的 age 属性。很简单,对吧?我们将仅使用链式访问,如下面的代码 −

示例

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

输出

控制台输出如下 −

23

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

现在我们的链接语句会发生什么,它将产生一个 typeError,表示无法访问 human 的未定义属性。在这种情况下,有没有什么方法可以让我们的代码不抛出任何错误。是的,这就是‘?’也就是说,可选链可以帮我们解决问题。

可选链的作用非常简单,在正常情况下,它的行为与普通链类似,但是当我们尝试访问未定义中的任何属性时,它不会让我们的代码抛出错误,而是立即终止链并返回未定义,以便剩余的代码块正常运行。

考虑我们的最后一个例子(可选链)−

示例

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

输出

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

undefined

相关文章