Javascript 什么';检查多个空值的最佳方法是什么?例如,如果(foo.bar.giz.mo.x==123)

Javascript 什么';检查多个空值的最佳方法是什么?例如,如果(foo.bar.giz.mo.x==123),javascript,Javascript,我记得在ECMAScript 5、6或7中听说过一种新的方法,可以让您执行以下操作: if(SomeOperator foo.bar.giz.mo.x === 123) 有人知道这叫什么吗?好消息:它叫空传播操作符?。它正是你所需要的 坏消息:它存在于C#6.0和Typescript中,但没有迹象表明它会出现在ES6-7中,即使有很多关于它的建议 不幸的是,在JS中实现这一点的最短方法仍然是 if(foo||{}.bar||{}.giz||{}.mo||{}.x === 123) 您问的是

我记得在ECMAScript 5、6或7中听说过一种新的方法,可以让您执行以下操作:

if(SomeOperator foo.bar.giz.mo.x === 123) 

有人知道这叫什么吗?

好消息:它叫空传播操作符
?。
它正是你所需要的

坏消息:它存在于C#6.0和Typescript中,但没有迹象表明它会出现在ES6-7中,即使有很多关于它的建议

不幸的是,在JS中实现这一点的最短方法仍然是

if(foo||{}.bar||{}.giz||{}.mo||{}.x === 123)

您问的是如何检查是否定义了属性链,如果任何键不存在,则不会抛出错误?我不认为有什么新的吗?我找不到,但应该有很多重复的。成语是
if(foo&&foo.bar&&foo.bar.giz&&foo.bar.giz.mo&&foo.bar.giz.mo.x==123)
foo&&foo.bar&&foo.giz…etc借助省略号和比通常短的变量名确保:P
person |{124;}address |{124;}street{.number
vs
person&&person.address&&person.address.street&&person.address.street.number
答案中的代码将抛出一个
ReferenceError:foo未定义
。我认为答案正在尝试,但错过了括号。假设从未声明基变量,它们都将抛出异常。