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

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

相关推荐
小二·2 小时前
React 19 + Next.js 15 现代前端开发实战:App Router / Server Components / 流式渲染
前端·javascript·react.js
CHNE_TAO_EMSM4 小时前
Android studio 打开文件时自动下载源码
前端·javascript·android studio
竹林8186 小时前
从 ethers.js 迁移到 Viem:一个签名验证 Bug 让我彻底放弃旧爱
javascript
你挚爱的强哥7 小时前
Vue2 实现 1.5s 十连击监听(连续点击若干次),封装通用可复用点击检测工具,不用 data!Vue 封装通用连击监听方法,支持自定义时长与点击次数
前端·javascript·vue.js
半个落月7 小时前
用 LangChain.js 手写一个能读写文件和执行命令的 Mini Cursor
javascript·人工智能·后端
天外天-亮7 小时前
HBuilder X 使用 uview-plus 方式
开发语言·javascript·hbuilder x·uview-plus
我有满天星辰8 小时前
Vue项目脚手架之争:create-vue与Vue CLI全面对比
前端·javascript·vue.js
多加点辣也没关系12 小时前
JavaScript|第9章:对象 — 基础
开发语言·javascript·ecmascript
我有满天星辰12 小时前
Vue 2 与 Vue 3 计算属性完全指南:从 Options API 到组合式 API 的演进
前端·javascript·vue.js
后台开发者Ethan13 小时前
setState组件更新
前端·javascript·react