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
。这是一个奇怪的打字错误,请埃弗雷什页面。啊,明白了。简单多了