是啥 ?。运营商和我可以在哪里使用? 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

如果datadata.coordsnullundefined(而不是引发错误),则将undefined 分配给lat。但如果datadata.coords不是 nullundefined,它会将data.coords.latitudedata.coords.longitude 分配给latlong。这是新的optional chaining 运算符。

下一行也使用它,但是:

    如果uid 可能是假值(如""0),您也应该使用新的nullish coalescing 运算符:?? 而不是||

    如果auth 可能是nullundefined,则需要另一个?.

所以:

const docId = auth?.currentUser?.uid ?? '123'

【讨论】:

这很好,因为 JS 何时允许像 C# 中的 null-conditional 运算符?这是新的还是我很长时间以来都错过了这个? @Cid ***.com/questions/476436/…

以上是关于是啥 ?。运营商和我可以在哪里使用? JavaScript中的空值合并运算符[重复]的主要内容,如果未能解决你的问题,请参考以下文章

国外的手机号码是啥开头的啊

PROLOG 中的垂直斜线函数到底是啥?是运营商吗?

华为CE是啥设备 型号是啥

假如我办理了某个手机电信运营商69元手机套餐,套餐里写着100M宽带20元,意思是啥?

__dirstream 是啥,在哪里可以找到定义

CMD是啥``在哪里打开```