JavaScript中的 ?? 和 || 有那些区别详解

 更新时间:2025年07月28日 09:47:17   作者:Web小白菜~  
||运算符用于逻辑判断,返回第一个为真的操作数,而 ?? 运算符用于空值合并,返回第一个非空的操作数,这篇文章主要介绍了JavaScript中的 ?? 和 || 有那些区别的相关资料,需要的朋友可以参考下

在JavaScript中,??(空值合并运算符)和||(逻辑或运算符)都可以用来处理变量值,但是切记这俩玩意不一样,是有区别的。

??(空值合并运算符)

空值合并运算符 (??) 是一个逻辑运算符,当左侧的操作数为 nullundefined 时,返回右侧的操作数;否则,返回左侧的操作数。

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 || "";  // 全是假值时,会返回最后一个  ''

区别

假值检查:

  • ?? 只检查 nullundefined
  • || 检查所有假值(false、0、""、null、undefined、NaN)。

类型强制转换:

  • ?? 不会对操作数进行类型转换,它直接返回原始值
  • || 会进行类型强制转换,如果左侧的操作数可以转换为假值,则返回右侧的操作数。

使用场景:

  • ?? 通常用于设置默认值,当左侧的值可能为 nullundefined 时。
  • || 以前常用于设置默认值,但现在推荐使用 ??,因为它更准确地处理了 null 和 undefined 的情况。

总结 

到此这篇关于JavaScript中的 ?? 和 || 有那些区别的文章就介绍到这了,更多相关JS中??和||区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • uniapp时间格式化处理实现

    uniapp时间格式化处理实现

    本文主要介绍了uniapp时间格式化处理实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • JavaScript获取本机IP地址的实现方法

    JavaScript获取本机IP地址的实现方法

    JavaScript本身受限于浏览器安全机制无法直接获取本机IP,但可通过WebRTC、Ajax请求等间接方式获取公网IP,本文介绍了多种使用JS获取IP的方法,需要的朋友可以参考下
    2025-10-10
  • JS中空值合并运算符 ?? 的使用

    JS中空值合并运算符 ?? 的使用

    本文介绍了JavaScript中的空值合并运算符??,解释了它在null或undefined值时的使用,并对比了与逻辑运算符||的不同之处,感兴趣的可以了解一下
    2025-07-07
  • JS动态日期时间的获取方法

    JS动态日期时间的获取方法

    这篇文章主要介绍了js获得当前系统日期时间的方法,涉及javascript操作日期时间的相关技巧,非常简单实用,需要的朋友可以参考下
    2015-09-09
  • JS弹出可拖拽可关闭的div层完整实例

    JS弹出可拖拽可关闭的div层完整实例

    这篇文章主要介绍了JS弹出可拖拽可关闭的div层完整实现方法,包括对div弹出层的样式及功能的实现技巧,非常具有实用价值,需要的朋友可以参考下
    2015-02-02
  • Bootstrap轮播图学习使用

    Bootstrap轮播图学习使用

    这篇文章主要为大家详细介绍了Bootstrap轮播图学习使用的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • FullCalendar日历插件应用之数据展现(一)

    FullCalendar日历插件应用之数据展现(一)

    fullcalendar作为一个功能完善的日历插件使用非常广泛,在web开发开发过程 中非常流行。它与ext js 中的calendar非常类似,但考虑到extjs 比较“复杂庞大”,所以我在开发开发过程中都会优先考虑fullcalendar
    2015-12-12
  • 微信小程序合法域名配置方法

    微信小程序合法域名配置方法

    这篇文章主要介绍了微信小程序合法域名配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • JavaScript 拖放效果代码

    JavaScript 拖放效果代码

    拖放效果,也叫拖拽、拖动,学名Drag-and-drop ,是最常见的js特效之一。 如果忽略很多细节,实现起来很简单,但往往细节才是难点所在。
    2008-12-12
  • TypeScript编译选项使用及说明

    TypeScript编译选项使用及说明

    本文介绍了tsconfig.json文件的作用、结构、常用编译选项、不同环境配置建议、配置继承与复用、常见问题与解决方案,并提供了常用编译选项对比表,帮助开发者全面了解TypeScript项目的配置
    2026-04-04

最新评论