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

空值合并运算符 ?? 是 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 的情况时更为准确,能避免误将有效假值替换,提升代码的健壮性。

相关推荐
Moment1 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
爱敲代码的小鱼1 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax
铅笔侠_小龙虾3 小时前
Flutter 实战: 计算器
开发语言·javascript·flutter
大模型玩家七七4 小时前
梯度累积真的省显存吗?它换走的是什么成本
java·javascript·数据库·人工智能·深度学习
2501_944711434 小时前
JS 对象遍历全解析
开发语言·前端·javascript
发现一只大呆瓜5 小时前
虚拟列表:支持“向上加载”的历史消息(Vue 3 & React 双版本)
前端·javascript·面试
阔皮大师5 小时前
INote轻量文本编辑器
java·javascript·python·c#
lbb 小魔仙5 小时前
【HarmonyOS实战】React Native 表单实战:自定义 useReactHookForm 高性能验证
javascript·react native·react.js
_codemonster5 小时前
Vue的三种使用方式对比
前端·javascript·vue.js
全栈前端老曹6 小时前
【MongoDB】Node.js 集成 —— Mongoose ORM、Schema 设计、Model 操作
前端·javascript·数据库·mongodb·node.js·nosql·全栈