我正在研究新的 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);
它再次返回未定义。不应该回来Uncaught TypeError: obj.b.c is undefined
吗?
这是一些实施差距还是我在这里遗漏了什么?提前致谢。
现在已经解决了。@Ifaruki 的评论有正确的解释。
更新:它称为“链接”运算符。它从左向右移动。如果它看到?如果未定义,它会检查左值。如果是,则返回未定义并停止向右移动。这意味着如果 b 已经未定义,它将不会检查右侧的值