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

文章编号:1012 技术教程 2026-02-04 js 空值合并运算符 JS  ??

空合并运算符 ?? (Nullish coalescing operator)  是一个逻辑运算符,当其左侧操作数为 null 或 undefined 时,它返回其右侧操作数,否则返回其左侧操作数

与 逻辑或 (||) 运算符不同,空值合并运算符只会考虑 null 和 undefined,而不会将其他假值(如 false0NaN"" 空字符串等)视为需要替代的值。

let a = null;let b = 5;let c = undefined;let d = 0;console.log(a ?? b); // 5,因为 a 是 nullconsole.log(c ?? b); // 5,因为 c 是 undefinedconsole.log(d ?? b); // 0,因为 d 不是 null 或 undefined,而是 0

比较 ?? 和 ||

let x = 0;let y = 10;console.log(x || y); // 10,因为 x 是假值(0)console.log(x ?? y); // 0,因为 x 不是 null 或 undefined

在上面的例子中:

提供默认值: 当一个值可能为 null 或 undefined 时,可以用 ?? 来提供一个默认值。

let userAge = null;let defaultAge = 18;let age = userAge ?? defaultAge;console.log(age); // 18,因为 userAge 是 null

避免无效值: 当你有多个潜在的 null 或 undefined 值时,可以使用空值合并运算符来选择第一个有效值。

空值合并运算符和可选链(?.)结合使用时,能够更安全地访问对象的属性,并且提供一个默认值。

let user = { name: "Alice" };let userAge = user?.age ?? 18;console.log(userAge); // 18,因为 user 对象中没有 `age` 属性,所以返回默认值 18

在这个例子中,?. 用于安全地访问 user.age,如果 age 不存在,它返回 undefined,然后 ?? 提供默认值 18

很多人会搞混?? 运算符 与 || 运算符,觉得这两个实现的效果都一样。其实这是不严谨的,它们之间还是有一些细微的差别。?? 和 || 主要区别在于 假 (false) 和 假值(falsy) 的区别。

// 1. 使用 0 作为输入 const a = 0;console.log(`a || 10 = ${a || 10}`); // a || 10 = 10console.log(`a ?? 10 = ${a ?? 10}`); // a ?? 10 = 0// 2. 空字符串 '' 作为输入const a = ''console.log(`a || "ABC" = ${a || "ABC"}`); // a || "ABC" = ABCconsole.log(`a ?? "ABC" = ${a ?? "ABC"}`); // a ?? "ABC" = // 3. 使用 null 作为输入const a = null;console.log(`a || 10 = ${a || 10}`); // a || 10 = 10console.log(`a ?? 10 = ${a ?? 10}`); // a ?? 10 = 10// 4. 使用 undefined 作为输入const a = {name: ''}console.log(`a.name ?? 'varun 1' = ${a.name ?? 'varun 1'}`); console.log(`a.name || 'varun 2' = ${a.name || 'varun 2'}`);// a.name ?? 'varun 1' = // a.name || 'varun 2' = varun 2// 5. 使用 false 作为输入const a = false;console.log(`a || 10 = ${a || 10}`); // a || 10 = 10console.log(`a ?? 10 = ${a ?? 10}`); // a ?? 10 = false

到此这篇关于JS中空合并运算符 ?? 的使用的文章就介绍到这了,更多相关JS 空合并运算符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!


本文地址: https://www.earthnavs.com/jishuwz/7ce913f7d56b416964c1.html
全局中部横幅
魔盾安全

该站点未添加描述description...

搜狐号

该站点未添加描述description...

YouTube

在YouTube上畅享你喜爱的视频和音乐,上传原创内容并与亲朋好友和全世界观众分享你的视频。

南方周末

该站点未添加描述description...

All
All

redditlisthelpsyoufindthebestpartsofreddit.combybringingyoudailyrankingsandstatisticsforthemostpopularsubreddits.

汉网

汉网由长江日报报业集团注资千万独资打造,是长江日报报业集团及旗下长江日报、武汉晚报、武汉晨报等十余家报刊在互联网上的主要代表。与长江公益文化传播院强强联合,打造湖北地区最具权威的公益性网站。是您身边的公益平台,关注您身边的公益活动,聚焦您身边公益人物。扶危济困、传递温暖,打造人人公益、快乐公益。

知道创宇云安全

知道创宇是国内专业的网络安全服务与运营厂商,始终保持“让互联网更好更安全”的愿景与“为国为民”的初心,专注服务政府单位与企业,基于AI+大数据智能算法提供全方位业务安全监测、安全防御、等级保护测评、高级渗透测试等服务,并且提供云监测、创宇盾、加速乐、统一云防御等安全领域产品以及网络安全定制化解决方案,为政企各业务系统安全保驾护航。

U
U

U-Mail是国内专业的邮件系统解决方案提供商,产品涵盖信创邮件系统、邮件服务器系统、企业邮箱系统等,致力于为企业打造安全的、稳定的国产信创邮件系统解决方案。

EwoMail邮件服务器,企业邮箱,一键搭建,安全稳定的开源邮件系统

Linux邮件服务器软件,一键搭建,轻量级的WebMail网页客户端,开源邮件系统,企业邮箱,轻松搭建,容易架设,支持反垃圾和防病毒,企业级邮箱系统解决方案

爱收集资源网

爱收集资源网每天更新大量原创技术教程,线报活动,QQ软件等,欢迎各位小刀娱乐网的基佬访问学习,给QQ爱好者们带来一个绿色温馨快乐的娱乐家园