Javascript 这个三元表达式在做什么?

Javascript 这个三元表达式在做什么?,javascript,ternary-operator,Javascript,Ternary Operator,我正在测试一个函数,它有两个参数定义和元素,其中有一个三元语句 otherThingName: (_.has(Definition.thing, 'thingName') ? Element[Definition.thing.thingName] : null) 现在将存在Definition.thing.thingName,但元素没有名为Definition的属性 在相同的设置下,otherThingName是否在元素上设置了该属性?三元表达式在某种程度上是if/else的缩写,因此在第一个

我正在测试一个函数,它有两个参数定义和元素,其中有一个三元语句

otherThingName: (_.has(Definition.thing, 'thingName') ? Element[Definition.thing.thingName] : null)
现在将存在
Definition.thing.thingName
,但元素没有名为Definition的属性


在相同的设置下,
otherThingName
是否在元素上设置了该属性?

三元表达式在某种程度上是if/else的缩写,因此在第一个实例中,它测试语句
(u.has(Definition.thing,'thingName')

我不使用下划线,但看起来此测试正在检查
定义.thing
是否具有
thingName
属性

如果返回true,它将把
otherThingName
设置为
Element[Definition.thing.thingName]

否则它会将其设置为
null

Element[Definition.thing.thingName]
正在查看一个名为
Element
的对象,并使用与
Definition.thing.thingName
的值匹配的键回调属性

例如,如果

Definition.thing.thingName==“name”

Element[Definition.thing.thingName]==Element[“name”]==Element.name


希望这能有所帮助。

展开文本,它会变得更加清晰:

var str;

if (_.has(Definition.thing, 'thingName')) {
    str = Element[Definition.thing.thingName]
} else {
    str = null;
}

...
    otherThingName: str

它似乎正在将某个对象“otherThingName”的成员定义为字段定义.thing.thingName(如果存在)设置的任何元素,或者为null。如果不看到更多代码,则无法分辨。否。此处的括号符号用作getter。如果
元素
具有该属性,则返回其值herwise它返回一个
未定义的
值。没有什么特别的。如果
元素
有一个名为
定义
的属性,这无关紧要。方括号表示它正在查找
元素。xyz
其中
xyz
定义中包含的值。thing.thingName
。这是一个奇怪的打字错误,请埃弗雷什页面。啊,明白了。简单多了