空值合并运算符`??`和逻辑或运算符 `||` 的区别

空值合并运算符 ?? 是 JavaScript 中的一个逻辑操作符,用于处理 null 或 undefined 的情况。以下是关于的详细介绍:

语法

javascript 复制代码
let result = value1 ?? value2;

在这个语法中,如果 value1 不是 null 也不是 undefined,则 result 的值为 value1;否则,result 的值为 value2。

应用场景

  • 提供默认值 :当需要为可能是 null 或 undefined 的变量提供默认值时,可以使用该运算符。
javascript 复制代码
let username = null;
let defaultUsername = "Guest";
let displayName = username ?? defaultUsername;
console.log(displayName); // 输出: "Guest"
  • 简化代码 :避免使用复杂的逻辑来处理 null 或 undefined 的情况,使代码更加简洁易读。

与逻辑或运算符 || 的区别

逻辑或运算符 || 会在左侧操作数为假值(如 0、''、false、null、undefined、NaN 等)时返回右侧操作数;而空值合并运算符 ?? 仅在左侧操作数为 null 或 undefined 时返回右侧操作数,其他假值会被保留。

javascript 复制代码
let value1 = 0;
let value2 = "Default";
let result1 = value1 ?? value2;
let result2 = value1 || value2;
console.log(result1); // 输出: 0
console.log(result2); // 输出: "Default"

在上述例子中,使用 ?? 运算符时,result1 取 0;而使用 || 运算符时,result2 取 value2 的值,因为 || 会把 0 视作假值。

综上所述,空值合并运算符 ?? 在处理只有 null 和 undefined 的情况时更为准确,能避免误将有效假值替换,提升代码的健壮性。

相关推荐
非优秀程序员8 小时前
第07章 孙德良的阳谋|《互联网产品恩仇录》
javascript·后端
程序员大阳12 小时前
HTML+CSS+JS对话式实战(5)-活动管理页之查看报名名单的实现
javascript·css·html·查看报名名单
新*14 小时前
从一段 WebSocket 代码聊开:bytes 不是 zlib、binaryType 决定一切,15MB 大消息的零拷贝优化
javascript·python·websocket·性能优化·blob·zlib·arraybuffer
OpsEye15 小时前
别再挨个充会员了:多模型编码,最麻烦的从来不是选模型
javascript·ai编程
学以智用17 小时前
jsencrypt.js 完整详解
javascript
Hilaku19 小时前
你们公司有 35 岁以上的前端吗?
前端·javascript·程序员
鸿蒙开发20 小时前
小程序存档写到一半怎么办?双槽保存与损坏恢复实战
前端·javascript·react.js
知忆_IS21 小时前
TerriaMap 开发实战04:MVT数据自定义符号化 - terriajs源码修改
javascript·webgis·terriamap·terriajs
云上工程笔记1 天前
SRT字幕一键转手绘动画:srt-whiteboard-animation的复刻实录
大数据·开发语言·javascript·人工智能·机器学习
FungLeo1 天前
成为全栈·Vue管理后台篇·<scriptsetup>:把页面拆成可读、可测的 Vue 组件
前端·javascript·vue.js·typescript·前端组件化·composition api·vue sfc