javascript中的obj..prop语法是什么?

时间:2019-02-05 06:26:05

标签: javascript ecmascript-5

我正在查看一个代码,发现了这个问题:

{{abc?.xvy=== tyu?abc?.xz:abc?.xz}}

我无法理解该表达的含义。我知道这是Null安全的属性访问,但是我对链接有点困惑。 任何帮助都非常感激

3 个答案:

答案 0 :(得分:8)

这似乎是optional chaining提案的示例,该提案仍在进行中(仅在第一阶段)。它实际上尚未在原始JS环境中实现。使用

obj?.prop

表示:如果obj未定义或为null,则表达式的计算结果为undefined。但是否则,它将评估对象的prop属性。这是语法糖

obj && obj.prop

(如果obj.prop未定义或为空,则仅使用obj会抛出

所以,您的

abc?.xvy=== tyu?abc?.xz:abc?.xz
如果嵌套值true等于嵌套值abc?.xvy-,则

的求值结果为abc?.xz如果至少一个嵌套值不存在,而另一个为true

隔开以便于阅读:

undefined

如您所见,abc?.xvy === tyu ? abc?.xz : abc?.xz ?表达式是相同的,因此这里不需要条件运算符。等效测试(假设引用:不会抛出)

tyu

答案 1 :(得分:5)

其新的ES提案称为“可选”,用于安全检查对象属性。上面的表达式等效于:

(abc && abc.xvy) === (tyu) ? (abc && abc.xz) : (abc && abc.xz)

您可以在此处找到更多详细信息:https://github.com/davidyaha/ecmascript-optionals-proposal

答案 2 :(得分:4)

它称为空传播运算符

我们可以认为每个运算符都是短路,其中“ 如果到现在为止的表达式为 null undefined ,则整个表达式的计算结果为 undefined ”。 我们还可以选择调用函数。