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 || '默认值'); // '默认值'(''是假值)
相关推荐
你想知道什么?8 分钟前
神经网络-学习笔记
笔记·神经网络·学习
疯狂打码的少年1 小时前
【计算机网络】IP地址与子网划分(IP地址分类与特殊地址)
网络·笔记·tcp/ip·计算机网络
bessyon1 小时前
从设备自购看医美机构的运营逻辑与竞争壁垒
笔记
疯狂打码的少年2 小时前
【计算机网络】TCP协议(三次握手、可靠传输、流量控制)
网络·笔记·tcp/ip·计算机网络
AIGC大时代2 小时前
OpenAI Agents SDK 工程笔记:tool 调用循环、max_turns 与生产禁区
服务器·数据库·笔记·tool·max_turns·functiontool·生产禁区
`流年づ2 小时前
人工智能学习笔记 - 自动微分
人工智能·笔记·学习
༄久梦༒长醉༻2 小时前
技术笔记——Git Worktree工作树
笔记·git
雨田言炎3 小时前
STM32之自定义协议帧格式
网络·笔记·stm32·单片机
kaixin_啊啊3 小时前
Codex论文辅助全流程
人工智能·笔记·学习·ai·大模型
愚公移山填海3 小时前
【无标题】
笔记·python·学习·pycharm