JavaScript中 ?? 和 ||的区别

JavaScript中??(空值合并运算符)和||(逻辑或运算符)都用于处理默认值,但它们的处理逻辑和适用场景有显著区别。

相似性
‌默认值设置‌:两者均用于在左侧值为“假值”或缺失时返回右侧值。
‌返回原始值‌:不返回布尔值,而是直接返回操作数的原始值。 ‌

核心区别
特性 | ??(空值合并运算符) | ||(逻辑或运算符)

处理条件 | 仅当左侧为 null 或 undefined 时返回右侧值。 | 当左侧为任意“假值”(如 false、0、""、null、undefined、NaN)时返回右侧值。 ‌

优先级 ??优先级高于 ||,在混合表达式中先计算。 ‌
优先级较低,需注意运算顺序。 ‌

示例 

const a = null;     a ?? 'default' → 'default'
const b = 0;         b ?? 'default' → 0

const a = null;     a || 'default' → 'default'
const b = 0;         b || 'default' → 'default' ‌

使用场景
??:适用于严格区分 null/undefined 和其他假值的场景(如设置非空默认值)。 ‌
||:适用于需要排除所有假值(包括 0、false 等)的场景。 ‌

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值