可选的链接逻辑



我不确定我是否了解可选链接的js实现背后的逻辑。

const a = {b:1}
1 > console.log(a?.c)     => undefined
2 > console.log(a?.c?.d)  => undefined
3 > console.log(a?.c.d)   => Uncaught TypeError: Cannot read property 'd' of undefined

一切都有意义这么久。然后:

4 > console.log(a?.c?.d.e) => undefined
5 > console.log(a?.c?.d.e.f.g) => undefined

访问未定义的属性会引发错误(#3(,但在2个可选链接之后访问任意数量的不存在的嵌套属性不会再引发错误。

对问题的评论回答正确。这里有一个澄清:

console.log(a.c)     // undefined
console.log(a.c.d)   // Uncaught TypeError: Cannot read property 'd' of undefined
console.log(a.c.d.e)   // Uncaught TypeError: Cannot read property 'd' of undefined
console.log(a.c?.d)  // undefined
console.log(a.c?.d.e) // undefined
console.log(a.c?.d.e.f.g) // undefined

您可以看到,求值总是在c处停止,因为没有属性a.c。当它停止时,如果您使用了可选的链接运算符(?.(,它将返回未定义的值,如果没有,它将抛出一个错误。

请注意,这是最近的一个功能。对于nodejs,它出现在版本14中,该版本自2020/10/27起已准备好生产(LTS(。

相关内容

  • 没有找到相关文章

最新更新