JavaScript中??与||运算符的区别详解

作者:小括号

时间:2026-10-31

浏览:349

本文详细解析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中??和||区别内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章