typescript || ?? 区别

举报
林欣 发表于 2024/09/22 21:59:17 2024/09/22
【摘要】 在TypeScript(以及JavaScript)中,||(逻辑或操作符)和??(空值合并操作符)都用于处理可能为null或undefined的值,但它们的行为和用途有所不同。 || 逻辑或操作符||操作符用于逻辑或运算,如果它的第一个操作数是truthy(在JavaScript中,除了false、0、""、null、undefined和NaN之外的所有值都被认为是truthy),则返回第一...

在TypeScript(以及JavaScript)中,||(逻辑或操作符)和??(空值合并操作符)都用于处理可能为nullundefined的值,但它们的行为和用途有所不同。

|| 逻辑或操作符

  • ||操作符用于逻辑或运算,如果它的第一个操作数是truthy(在JavaScript中,除了false0""nullundefinedNaN之外的所有值都被认为是truthy),则返回第一个操作数;否则,返回第二个操作数。
  • 重要的是要注意,||并不严格检查nullundefined,而是检查任何被视为falsy的值。因此,如果你使用||来提供一个默认值,而原始值可能是0""false(这些值在JavaScript中被视为falsy),那么这些值将会被错误地替换为默认值。

?? 空值合并操作符

  • ??操作符是一个逻辑操作符,它仅当左侧的表达式结果是nullundefined时,才会返回右侧的表达式。
  • 它的主要目的是提供一种更直观的方式来为可能为nullundefined的变量提供一个默认值,而不会错误地替换掉那些被认为是falsy但实际上是有意义的值(如0""false)。

示例

let a = 0;
let b = a || 5; // b 将会是 5,因为 0 是 falsy
let c = a ?? 5; // c 将会是 0,因为 a 不是 null 或 undefined

let d: string | undefined = undefined;
let e = d || "default"; // e 将会是 "default",因为 d 是 falsy
let f = d ?? "default"; // f 也会是 "default",但这里的逻辑更直接地指向了 null 或 undefined 的情况

let g: string | null = null;
let h = g || "default"; // h 将会是 "default"
let i = g ?? "default"; // i 也会是 "default",但使用 ?? 更清晰地表达了意图

总结来说,虽然||??在某些情况下看起来可以互换使用,但??在处理可能为nullundefined的值时提供了更精确的控制,并且不会错误地替换掉那些被认为是falsy但实际上有意义的值。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。