在 JavaScript/TypeScript 中,`??` 和 `||` 都是逻辑运算符(逻辑运算符),但它们的判断逻辑不同:


 ?? (空值合并运算符)

  1.  仅当左侧的值为 null 或 undefined 时,才返回右侧的值
  2.  对空字符串 ' '、0、false 等 "假值" 不生效

例如:

你的代码 payData?.cid ?? '':

  •  只有当 payData?.cid 是 null或 undefined 时,才会使用 ' '
  •  如果 payData?.cid 是 ' '(空字符串),则会直接返回 ' '

| | (逻辑或运算符)

  1.  当左侧的值为 `"假值"`(null、undefined、''、0、false 等)时,就返回右侧的值
  2.  覆盖范围比 `?? `更广

如果:

换成 payData?.cid  | |  ' ':

  •  不仅 null/undefined 会返回 ''
  •  当 payData?.cid 是 0 或 false 时,也会返回 ' '

 总结

?? 更精确:只处理 null/undefined

|| 更宽泛:处理所有 "假值"

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐