JavaScript 中的 `||` 和 `??`

|| 和 ?? 都是 JavaScript 中的逻辑运算符,但它们有不同的用途和行为。

  1. ||(逻辑或)运算符:

    • 用途:用来检查多个表达式,返回第一个真值(truthy)表达式。
    • 行为:当遇到第一个真值(truthy)表达式时,返回该表达式。如果没有真值表达式,则返回最后一个表达式。
    • 真值(truthy)和假值(falsy) :在 JavaScript 中,以下值被视为假值(falsy):false、0、""(空字符串)、null、undefined、和 NaN。所有其他值都被视为真值(truthy)。
    javascript 复制代码
    let a = 0;
    let b = null;
    let c = 'Hello';
    let result = a || b || c; // result 是 'Hello',因为这是第一个真值(truthy)表达式。
  2. ??(空值合并)运算符:

    • 用途 :用来返回第一个不为 null 或 undefined 的操作数。
    • 行为 :当遇到第一个不为 null 或 undefined 的操作数时,返回该操作数。如果所有操作数都是 null 或 undefined,则返回最后一个操作数。
    javascript 复制代码
    let a = 0;
    let b = null;
    let c = 'Hello';
    let result = a ?? b ?? c; // result 是 0,因为 0 不为 null 或 undefined。

关键区别

  • || 会返回第一个真值(truthy)表达式,因此它可能会返回一些在逻辑上为假值(falsy)的值,例如 0、"" 或 false,因为这些值在 || 运算符中被视为假值。
  • ?? 只会忽略 null 和 undefined,因此它会返回第一个不为 null 或 undefined 的值,即使该值是其他假值(falsy),如 0 或 ""。

例子对比

javascript 复制代码
let a = 0;
let b = '';
let c = 'default';

// 使用 || 运算符
let result1 = a || b || c; // result1 是 'default',因为 0 和 '' 都是 falsy 值。

// 使用 ?? 运算符
let result2 = a ?? b ?? c; // result2 是 0,因为 0 不为 null 或 undefined。

选择哪一个运算符取决于你想要的具体行为。如果你希望忽略所有假值(falsy),使用 ||。如果你只希望忽略 null 和 undefined,使用 ??。

相关推荐
用户老李6 小时前
无线电自学教程 02:数学工具箱——正弦、复数、相量与分贝
前端
紧跟先前的步伐6 小时前
Go AI Agent 实战 28|Agent 的预算、超时与停止条件
开发语言·人工智能·后端·ai·golang
lpp196 小时前
一个网页的完整一生:从敲网址到页面显示,中间发生了什么
前端
bksczm7 小时前
InnoDB 行格式详解:DYNAMIC / COMPACT / COMPRESSED / REDUNDANT
java·开发语言·数据库
春涧草茶7 小时前
慢就是快16-1协程
开发语言·前端·python
Oiiouui7 小时前
linux服务器部署Logto后端与对应前端的实现
linux·服务器·前端·后端
前端小D8 小时前
JS核心底层
前端·javascript
律宏阔8 小时前
Taro 4 项目从 npm 迁移到 pnpm 踩坑实录
前端·微信小程序·taro
用户30816998764858 小时前
同一句话问 AI 15 次,答案 15 个:temperature 0 实测也不稳
前端
SameX8 小时前
ArkTS 做 5 态数据流 —— 咖啡电量的代谢状态机怎么驱动 UI
前端