我有一个我测试的函数,它接受两个参数Definition和Element,并且在其中有一个三元语句,如
otherThingName: (_.has(Definition.thing, 'thingName') ? Element[Definition.thing.thingName] : null)
现在Definition.thing.thingName
将存在,但Element没有名为Definition的属性。
在相同的设置otherThingName
?
答案 0 :(得分:1)
三元表达式是一个简短的if / else,所以在第一个例子中,它测试语句(_.has(Definition.thing, 'thingName')
。
我不使用下划线,但看起来此测试检查Definition.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
。
希望这有帮助。
答案 1 :(得分:1)
扩展文本会变得更清晰:
var str;
if (_.has(Definition.thing, 'thingName')) {
str = Element[Definition.thing.thingName]
} else {
str = null;
}
...
otherThingName: str
看起来它将某个对象'otherThingName'的成员定义为Element为字段Definition.thing.thingName设置的任何内容(如果存在),否则为null。