JS中??和||的区别

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

?? (空值合并运算符)

  • 只检测 nullundefined

  • 对于 0false''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)

  • 假值包括:false0''nullundefinedNaN

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 || '默认值'); // '默认值'(''是假值)
相关推荐
tt5555555555554 小时前
电工证学习笔记(二)
笔记·学习·电力
阿米亚波5 小时前
【C++ STL】std::unordered_multiset
开发语言·数据结构·c++·笔记·stl
AnsonNie6 小时前
Ubuntu系统安装裕太微YT6801网卡驱动【笔记】
笔记·ubuntu
xqqxqxxq7 小时前
DML 表数据:插入、删除、修改
笔记·mysql
不会代码的小猴7 小时前
Linux note2
linux·笔记
xqqxqxxq8 小时前
MySQL 数据类型笔记
数据库·笔记·mysql
软件技术NINI10 小时前
盗墓笔记html+css+js 2页
css·笔记·html
XiaoYu1__10 小时前
算法进阶·其二:用欧拉路径解决“一笔画”问题并建模转化De Bruijn序列的构造问题
c++·笔记·算法·欧拉路径
智者知已应修善业10 小时前
【用D触发器组成000-001-010-011-100】2025-6-7
驱动开发·经验分享·笔记·硬件架构·硬件工程
纪念 22911 小时前
数据库基础
数据库·笔记·学习方法