空值合并运算符`??`和逻辑或运算符 `||` 的区别

空值合并运算符 ?? 是 JavaScript 中的一个逻辑操作符,用于处理 nullundefined 的情况。以下是关于的详细介绍:

语法

javascript 复制代码
let result = value1 ?? value2;

在这个语法中,如果 value1 不是 null 也不是 undefined,则 result 的值为 value1;否则,result 的值为 value2

应用场景

  • 提供默认值 :当需要为可能是 nullundefined 的变量提供默认值时,可以使用该运算符。
javascript 复制代码
let username = null;
let defaultUsername = "Guest";
let displayName = username ?? defaultUsername;
console.log(displayName); // 输出: "Guest"
  • 简化代码 :避免使用复杂的逻辑来处理 nullundefined 的情况,使代码更加简洁易读。

与逻辑或运算符 || 的区别

逻辑或运算符 || 会在左侧操作数为假值(如 0''falsenullundefinedNaN 等)时返回右侧操作数;而空值合并运算符 ?? 仅在左侧操作数为 nullundefined 时返回右侧操作数,其他假值会被保留。

javascript 复制代码
let value1 = 0;
let value2 = "Default";
let result1 = value1 ?? value2;
let result2 = value1 || value2;
console.log(result1); // 输出: 0
console.log(result2); // 输出: "Default"

在上述例子中,使用 ?? 运算符时,result10;而使用 || 运算符时,result2value2 的值,因为 || 会把 0 视作假值。

综上所述,空值合并运算符 ?? 在处理只有 nullundefined 的情况时更为准确,能避免误将有效假值替换,提升代码的健壮性。

相关推荐
冬奇Lab2 小时前
AI Workflow 定义的四次演进:从 Markdown 到 JS 脚本,再到分布式多 Agent
javascript·人工智能·agent
一颗烂土豆8 小时前
Meshopt 压缩深度解析,为什么它比 Draco 更快
前端·javascript·webgl
kyriewen10 小时前
同事每天催我 Code Review,我写了个脚本让 AI 替我 review PR——现在他反过来催 AI 了
前端·javascript·ai编程
weedsfly13 小时前
迭代器、生成器与异步迭代——让数据“按需流动”的艺术
前端·javascript
假如让我当三天老蒯13 小时前
前端跨域解决方案(学习用)
前端·javascript·面试
铁皮饭盒15 小时前
Bun 哪比 Node.js 快?
javascript·后端
JieE2121 天前
LeetCode 56. 合并区间|超清晰 JS 图解思路,面试高频区间题
javascript·算法·面试
candyTong1 天前
RTK 技术原理:一次典型会话里,80% 上下文是怎么省下来的
javascript·后端·架构
_柳青杨1 天前
深入理解 JavaScript 事件循环
前端·javascript
大家的林语冰1 天前
ES5 凉凉,Babel 8 正式发布,默认不再编译为 ES5 和 CJS......
前端·javascript·前端工程化