问题描述
我正在研究新的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 (将#修改为@)