我的问题

考虑一个对象的嵌套属性的比较:

display.entities.listAfter.text === 'blah';


如果嵌套查找中的属性之一不存在,则会出现类型错误,例如:

TypeError: Cannot read property 'listAfter' of undefined


我尝试了什么

尝试赶上。可行,但不是很优雅,我想知道是否有更好的方法。

我的命令

除了尝试和捕获之外,还有没有一种规范的方法可以在进行比较之前检查嵌套属性是否存在?

最佳答案

我不了解规范,但有时会这样做:

display.entities &&
display.entities.listAfter &&
display.entities.listAfter.text === 'blah'


但是,当然很快就会变得笨拙。如果您真的希望它看起来不错,请转向lodash!

https://lodash.com/docs/4.17.10#get

您可以提供.get函数的路径,甚至可以找到一个默认值(如果找不到)

_.get(display, 'entities.listAfter.text') === 'blah'

07-24 16:59