假设我在coffeescript中有如下对象引用:
object.param.foo.bar
我要验证该栏是否存在?我该怎么做?
我相信object.param.foo?.bar
测试foo
的存在,如果它不存在则返回undefined
,但object.param.foo.bar?
将整个表达式转换为布尔测试。
我想要的是如果它存在则返回object.param.foo.bar
,如果不存在则返回undefined
。
答案 0 :(得分:3)
我认为你正在寻找表达式
object.param?.foo?.bar
假设object
存在,如果undefined
,.param
或.foo
属性不存在,则会返回.bar
。如果你知道它们确实存在,你可以省略?
。
答案 1 :(得分:1)
我不确定我理解你的问题(object.param.foo?.bar
如何做你想做的事?你没有告诉我们。)。
但是如果你想要全程执行空检查(如果object
,object.param
或object.param.bar
为空),你可以使用:
bar = object?.param?.foo?.bar
如果此链上的任何内容为null或未定义,则会生成undefined
,如果存在,则生成object.param.foo.bar
的值。