JS里的 ?? 和 || 有啥区别

打印 上一主题 下一主题

主题 844|帖子 844|积分 2532

在JavaScript中,??(空值合并运算符)和||(逻辑或运算符)都可以用来处置惩罚变量值,但是牢记这俩玩意不一样,是有区别的。
??(空值合并运算符)

   空值合并运算符 (??) 是一个逻辑运算符,当左侧的操作数为 null 或 undefined 时,返回右侧的操作数;否则,返回左侧的操作数。
  1. let a = null;
  2. let b = 5;
  3. let result = a ?? b; // result 将是 5,因为 a 是 null
  4. let c = 0;
  5. let d = "hello";
  6. let result2 = c ?? d; // result2 将是 0,因为 c 不是 null 或 undefined
复制代码
||(逻辑或运算符)

   逻辑或运算符 (||) 是一个短路逻辑运算符,当左侧的操作数为假值(如 false、0、""、null、undefined 或 NaN)时,返回右侧的操作数;否则,返回左侧的操作数。
  1. let x = 0;
  2. let y = "default";
  3. let result3 = x || y; // result3 将是 "default",因为 0 被视为假值
  4. let z = null;
  5. let w = "hello";
  6. let result4 = z || w; // result4 将是 "hello",因为 null 被视为假值
  7. let result5 = null || undefined || 0 || "";  // 全是假值时,会返回最后一个  ''
复制代码
区别

假值检查:



  • ?? 只检查 null 或 undefined。
  • || 检查所有假值(false、0、""、null、undefined、NaN)。
类型逼迫转换:



  • ?? 不会对操作数进行类型转换,它直接返回原始值。
  • || 会进行类型逼迫转换,如果左侧的操作数可以转换为假值,则返回右侧的操作数。
使用场景:



  • ?? 通常用于设置默认值,当左侧的值大概为 null 或 undefined 时。
  • || 以前常用于设置默认值,但如今推荐使用 ??,由于它更准确地处置惩罚了 null 和 undefined 的情况。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

数据人与超自然意识

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表