一分钟认识JS中 ?? 和 || 两者的用法和区别

前言

在JS中,??|| 都可以处理空值或者未定义,这两个操作符有什么区别呢?

||

|| 是逻辑或运算符,用于进行逻辑判断,它是这样运行的,如果第一操作值为假值(null、undefined、false、空字符串、0、NaN),那么就会返回第二个值。如果第一个值为真值,返回第一个值。

|| 一般用在处理默认值或者条件运算

示例

js 复制代码
const a = null;
const b = "Hello World";
const c = a || b; // c is now "Hello World"

??

??是空值合并操作符,用于对空值(null、undefined)进行处理。它的行为是这样的:如果第一个操作数是空值(例如 nullundefined),那么它就会返回第二个操作数的值。反之返回第一个值。

?? 一般用于简化代码进行空值合并

js 复制代码
const a = null;
const b = "Hello World";
const c = a ?? b; // c is now "Hello World"

区别

js 复制代码
const a = false
const b = "Hello World"
a ?? b  // false
a || b // "Hollo World"

总结起来有两点不同:

  1. 值判断范围不同: || 判断是否为假值 , 而??主要针对null undefined
  2. 用途稍有不同:|| 是逻辑运算符偏向逻辑处理, ??主要为了简化代码
相关推荐
无糖可可果9 分钟前
从零读懂一个 Next.js 全栈笔记应用
前端
Maxkim9 分钟前
DeepSeek Harness 源码深度分析:像 VS Code 一样插件化的 Agent 框架
前端·架构
xiaominlaopodaren10 分钟前
three.js地图数学基础(八):浮点精度
javascript·gis·three.js
喜欢睡觉14 分钟前
从零看懂一个 Next.js 笔记应用
前端
SendTomo15 分钟前
跨设备文件互传新方案
javascript·网络·webrtc·html5·p2p
cindershade16 分钟前
从零实现画布「双击创建节点」:一个 VueFlow 项目的交互全记录
前端
YHL16 分钟前
🚀 SSE 服务器发送事件与 BFF 层实战
前端·后端
今日无bug19 分钟前
HTML5 Canvas:从画图到游戏开发
前端·canvas
cindershade20 分钟前
用 Web Workers 优化前端重计算任务:避免主线程卡顿的实战方案
前端
爱丶不疚20 分钟前
搞不清 CommonJS 与 ESM,你是否也有这些疑问🤔
前端·node.js