JavaScript可选chaining?.运算符如何工作?

问题描述

我正在研究新的JS ?.功能。它可以帮助我们避免出现此类错误,

TypeError: Cannot read property ‘x’ of undefined

你可以写

const obj = {a: 1};
console.log(obj?.b);

没有错误。如果undefined对象中没有名为b的属性,它将返回obj。现在,这适用于(。)运算符的第一级。但是,如果我尝试这样的事情,

console.log(obj.b.c.d?.e);

这引发了错误,

Uncaught TypeError: obj.c is undefined // In firefox it throws obj.b is undefined.

但是如果我写

console.log(obj.b?.c.d?.e);

它再次返回undefined。它不应该返回Uncaught TypeError: obj.b.c is undefined吗?

这是实现上的差距吗?还是我在这里缺少什么?预先感谢。

现在解决了。 @Ifaruki的评论有适当的解释。

更新:其称为“链接”运算符。它从左向右移动。如果看到?。如果未定义,它将检查左值。如果是,则返回undefined并停止向右移动。这意味着如果b已经不确定,它将不会检查右侧的值

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)