JS中??和||的区别

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

?? (空值合并运算符)

  • 只检测 null 和 undefined

  • 对于 0、false、''、NaN 等 假值 ,会正常返回

javascript 复制代码
let a = null;
let b = undefined;
let c = 0;
let d = false;
let e = '';

console.log(a ?? '默认值'); // '默认值'(null)
console.log(b ?? '默认值'); // '默认值'(undefined)
console.log(c ?? '默认值'); // 0(不是null/undefined)
console.log(d ?? '默认值'); // false(不是null/undefined)
console.log(e ?? '默认值'); // ''(不是null/undefined)

|| (逻辑或运算符)

  • 检测所有"假值" (falsy values)

  • 假值包括:false、0、''、null、undefined、NaN

javascript 复制代码
let a = null;
let b = undefined;
let c = 0;
let d = false;
let e = '';

console.log(a || '默认值'); // '默认值'
console.log(b || '默认值'); // '默认值'
console.log(c || '默认值'); // '默认值'(0是假值)
console.log(d || '默认值'); // '默认值'(false是假值)
console.log(e || '默认值'); // '默认值'(''是假值)
相关推荐
RickyWasYoung13 小时前
二阶魔方底层逻辑分析
笔记
Sammyyyyy14 小时前
结构化决策模型 Jev 实战笔记,3 个原语、4 个限制、5 个落地场景
人工智能·笔记·开发工具·编程语言
东方芷兰14 小时前
Agent 技术摘要 05 —— BP、SaaS、B2B、C2B、B2C
java·笔记·python·语言模型·自然语言处理
Chen—LSN14 小时前
数据结构——拿捏复杂度
java·c语言·开发语言·数据结构·经验分享·笔记·算法
星恒随风15 小时前
Linux开发工具详解(一):软件包管理、Vim、GCC/G++、Makefile与进度条实战
linux·运维·笔记·学习·vim
小小、码农15 小时前
Ubuntu / Linux 软件安装完整笔记
linux·笔记·ubuntu
xzal1215 小时前
Python 列表操作笔记:append / extend / + / pop
笔记·python
维克兜率天15 小时前
【维克】价差交易实战:配对交易的核心参数设置
大数据·笔记·算法·量化
Seraphina3615 小时前
SQL注入(一)
数据库·经验分享·笔记·sql·网络安全
AOI小白新手上路16 小时前
视频去雨网络的模块缝合路线 · 实践笔记
网络·笔记·音视频