JavaScript 中关于 ?? 和 || 的区别和相似性
  V6aK5420gZSX 2023年11月02日 28 0


JavaScript 中关于 ?? 和 || 的区别和相似性


文章目录

  • JavaScript 中关于 ?? 和 || 的区别和相似性
  • 前言
  • 相似性
  • 区别
  • 优先级
  • 处理假值
  • 返回值
  • 示例


前言

当处理默认值时,??(空值合并运算符)和||(逻辑或运算符)是 JavaScript 中的两个重要工具。尽管它们的目标相似,但它们在实现和使用上存在一些关键区别。本文将详细探讨它们的区别和相似之处。

相似性

  1. 用途:
  • ??|| 都用于在值可能是假值或缺失时提供默认值。
  1. 返回值:
  • 两者都返回一个值,而不是布尔值。这使它们不同于通常的逻辑或布尔运算。

区别

优先级

  • ?? 的优先级比 || 高。这意味着在表达式中同时使用它们时,?? 将首先计算。这可能会导致不同的行为,特别是当你想要设置默认值时。

处理假值

  • ?? 只处理严格等于 nullundefined 的情况。它不会处理其他假值,如 0false、空字符串 '' 等。只有在左侧操作数是 nullundefined 时,?? 才会返回右侧操作数。
  • || 处理更广泛的假值情况,包括 nullundefinedfalse0NaN、空字符串 '' 等。如果左侧操作数是假值,|| 会返回右侧操作数。

返回值

  • ?? 在左侧操作数是 nullundefined 时返回右侧操作数,否则返回左侧操作数。这意味着 ?? 可以用于提供非假值的默认值。
  • || 返回第一个真值,或者如果没有真值,返回最后一个操作数的值。这使得它在需要选择第一个非假值的情况下更有用。

示例

const a = null;
const b = 0;

const result1 = a ?? 'Default';  // result1为 'Default',因为a是null
const result2 = b ?? 'Default';  // result2为 0,因为b不是null

const result3 = a || 'Default';  // result3为 'Default',因为a是null
const result4 = b || 'Default';  // result4为 'Default',因为b是假值

总之,??|| 都可用于提供默认值,但它们在处理假值和优先级方面存在区别。根据你的需求和是否需要严格处理 nullundefined,你可以选择其中之一。这两种运算符是 JavaScript 开发中的有用工具,根据具体情况来选择使用它们。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
V6aK5420gZSX