是啥 ?。运营商和我可以在哪里使用? JavaScript中的空值合并运算符[重复]
Posted
技术标签:
【中文标题】是啥 ?。运营商和我可以在哪里使用? JavaScript中的空值合并运算符[重复]【英文标题】:What is the ?. operator and Where I can the use ?? Nullish Coalescing Operator in JavaScript [duplicate]是什么 ?。运营商和我可以在哪里使用? JavaScript中的空值合并运算符[重复] 【发布时间】:2020-12-02 03:44:01 【问题描述】:我找到了这段代码:这里,?.
javascript 运算符是什么?根据下面提到的代码 sn-p,我是否可以在 JavaScript 中使用 ??
Nullish Coalescing Operator 而不是 ||
OR 运算符?
const location =
lat: data?.coords?.latitude,
long: data?.coords?.longitude
const docId = auth.currentUser?.uid || '123'
【问题讨论】:
从技术上讲,您应该使用??
而不是||
,因为uid
可能会返回一个既非空也非未定义的虚假值:const docId = auth.currentUser?.uid ?? '123'
@ViduminiKulathunga 这是optional chaining operator
这能回答你的问题吗? What is the obj?.prop syntax in javascript?
参见 What does this symbol mean in JavaScript? 和 MDN 上关于 expressions and operators 和 statements 的文档。
【参考方案1】:
有点不清楚你在问什么。这段代码:
const location =
lat: data?.coords?.latitude,
long: data?.coords?.longitude
如果data
或data.coords
是null
或undefined
(而不是引发错误),则将undefined
分配给lat
。但如果data
和data.coords
都不是 null
或undefined
,它会将data.coords.latitude
和data.coords.longitude
分配给lat
和long
。这是新的optional chaining 运算符。
下一行也使用它,但是:
如果uid
可能是假值(如""
或0
),您也应该使用新的nullish coalescing 运算符:??
而不是||
。
如果auth
可能是null
或undefined
,则需要另一个?.
所以:
const docId = auth?.currentUser?.uid ?? '123'
【讨论】:
这很好,因为 JS 何时允许像 C# 中的 null-conditional 运算符?这是新的还是我很长时间以来都错过了这个? @Cid ***.com/questions/476436/…以上是关于是啥 ?。运营商和我可以在哪里使用? JavaScript中的空值合并运算符[重复]的主要内容,如果未能解决你的问题,请参考以下文章