奇怪的语法,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