JavaScript中??与||运算符的区别详解
作者:小括号时间:2026-10-31 21:30:11浏览:350
本文详细解析JavaScript中??(空值合并运算符)与||(逻辑或运算符)的区别。重点说明??仅针对null和undefined返回右侧值,不进行类型转换;而||会检查所有假值并执行隐式类型转换。通过代码示例对比两者在处理默认值时的不同行为,帮助开发者根据实际需求选择合适运算符。
在JavaScript中,??(空值合并运算符)和||(逻辑或运算符)都可以用来处理变量值,但是二者存在显著差异,使用时需特别注意。
??(空值合并运算符)
空值合并运算符 (??)是一个逻辑运算符,当左侧的操作数为null或undefined时,返回右侧的操作数;否则,返回左侧的操作数。
let a = null;
let b = 5;
let result = a ?? b; // result 将是 5,因为 a 是 null
let c = 0;
let d = "hello";
let result2 = c ?? d; // result2 将是 0,因为 c 不是 null 或 undefined
||(逻辑或运算符)
逻辑或运算符 (||)是一个短路逻辑运算符,当左侧的操作数为假值(如false、0、""、null、undefined 或 NaN)时,返回右侧的操作数;否则,返回左侧的操作数。
let x = 0;
let y = "default";
let result3 = x || y; // result3 将是 "default",因为 0 被视为假值
let z = null;
let w = "hello";
let result4 = z || w; // result4 将是 "hello",因为 null 被视为假值
let result5 = null || undefined || 0 || ""; // 全是假值时,会返回最后一个 ''
区别
假值检查:
??只检查null或undefined。||检查所有假值(false、0、""、null、undefined、NaN)。
类型强制转换:
??不会对操作数进行类型转换,它直接返回原始值。||会进行类型强制转换,如果左侧的操作数可以转换为假值,则返回右侧的操作数。
使用场景:
??通常用于设置默认值,当左侧的值可能为null或undefined时。||以前常用于设置默认值,但现在推荐使用??,因为它更准确地处理了 null 和 undefined 的情况。
总结
到此这篇关于JavaScript中的 ?? 和 || 有那些区别的文章就介绍到这了,更多相关JS中??和||区别内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
作者最新文章
JS语法错误会阻止加载吗?区分SyntaxError与资源加载失败
2026-11-05 16:08:46
JavaScript常见SyntaxError语法错误排查与修复方法
2026-11-05 13:58:44
JS中slice、substring和substr截取字符串的区别
2026-11-05 13:43:47
JS 转 TS 手动迁移最佳实践:从配置 tsconfig 到消除 any 类型
2026-11-05 11:53:32
为什么JS数组push后得到的是数字而不是数组?
2026-11-05 09:59:18
