JavaScript中的 ?? 和 || 有那些区别详解
作者:Web小白菜~
||运算符用于逻辑判断,返回第一个为真的操作数,而 ?? 运算符用于空值合并,返回第一个非空的操作数,这篇文章主要介绍了JavaScript中的 ?? 和 || 有那些区别的相关资料,需要的朋友可以参考下
在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中??和||区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!