javascript 中的 obj?.prop 语法是什么?
What is the obj?.prop syntax in javascript?
我在查看代码时遇到了这个:
{{abc?.xvy=== tyu?abc?.xz:abc?.xz}}
我无法理解这个表达的意思。我知道它是 Null-safe 属性 访问,但我对链接有点困惑。
非常感谢任何帮助
其名为 "optionals" 的新 ES 提案用于对象属性的安全检查读取。上面的表达式等同于:
(abc && abc.xvy) === (tyu) ? (abc && abc.xz) : (abc && abc.xz)
您可以在此处找到更多详细信息:https://github.com/davidyaha/ecmascript-optionals-proposal
它被称为空传播算子。
我们可以将每个 ?. 运算符视为一个短路,其中“如果到此为止的表达式为 null 或 undefined,则整个表达式的计算结果为 undefined”。
我们还可以选择调用函数。
这看起来是 optional chaining 提案的一个示例,该提案仍在进行中(仅在第 1 阶段)。它实际上还没有在 vanilla JS 环境中实现。使用
obj?.prop
表示:如果 obj
未定义或为空,则表达式的计算结果为 undefined
。但除此之外,它将计算为对象上的 prop
属性。这是
的语法糖
obj && obj.prop
(如果 obj
未定义或为空,单独使用 obj.prop
将抛出异常)
那么,你的
abc?.xvy=== tyu?abc?.xz:abc?.xz
如果嵌套值 abc?.xvy
等于嵌套值 abc?.xz
- 或 , 将计算为 true
,它将计算为true
如果至少一个嵌套值不存在,另一个是 undefined
.
为便于阅读而留出空间:
abc?.xvy === tyu
? abc?.xz
: abc?.xz
如您所见,?
和 :
表达式相同,因此此处不需要条件运算符。等效测试(假设引用 tyu
不抛出)将是
abc?.xvy === abc?.xz
我在查看代码时遇到了这个:
{{abc?.xvy=== tyu?abc?.xz:abc?.xz}}
我无法理解这个表达的意思。我知道它是 Null-safe 属性 访问,但我对链接有点困惑。 非常感谢任何帮助
其名为 "optionals" 的新 ES 提案用于对象属性的安全检查读取。上面的表达式等同于:
(abc && abc.xvy) === (tyu) ? (abc && abc.xz) : (abc && abc.xz)
您可以在此处找到更多详细信息:https://github.com/davidyaha/ecmascript-optionals-proposal
它被称为空传播算子。
我们可以将每个 ?. 运算符视为一个短路,其中“如果到此为止的表达式为 null 或 undefined,则整个表达式的计算结果为 undefined”。 我们还可以选择调用函数。
这看起来是 optional chaining 提案的一个示例,该提案仍在进行中(仅在第 1 阶段)。它实际上还没有在 vanilla JS 环境中实现。使用
obj?.prop
表示:如果 obj
未定义或为空,则表达式的计算结果为 undefined
。但除此之外,它将计算为对象上的 prop
属性。这是
obj && obj.prop
(如果 obj
未定义或为空,单独使用 obj.prop
将抛出异常)
那么,你的
abc?.xvy=== tyu?abc?.xz:abc?.xz
如果嵌套值 abc?.xvy
等于嵌套值 abc?.xz
- 或 , 将计算为 true
,它将计算为true
如果至少一个嵌套值不存在,另一个是 undefined
.
为便于阅读而留出空间:
abc?.xvy === tyu
? abc?.xz
: abc?.xz
如您所见,?
和 :
表达式相同,因此此处不需要条件运算符。等效测试(假设引用 tyu
不抛出)将是
abc?.xvy === abc?.xz