?? 、 || 、&&=、||=、??=这些运算符你用对了吗?

在日常开发中,你是不是也常用||来给变量设置默认值?比如

js 复制代码
const title = props.title || '默认标题';

看起来好像没什么大问题,但是当title0,false或者""的时候,或者思考比较全面的同学可能会额外加上关于0false''的判断,但其实有更简单的方法,就是使用??

?? 和 || 的区别

运算符 规则
|| 如果左边是 null 或 undefined,返回右边
?? 如果左边是"假值"(false、0、''、null、undefined),返回右边

??运算符是ES2020 引入的,除了引入了??,自从ES2020以来,还引入了其他几个运算符

可选链?.

用于安全访问多层嵌套对象属性,避免手动判断每一级是否存在

js 复制代码
const city = user?.address?.city;
  • 如果 useruser.addressnull未定义,不会抛错,而是直接返回 undefined
  • 支持属性访问: obj?.prop
  • 支持数组规线访问: arr?.[0]
  • 支持函数调用: fn?.()

逻辑与赋值&&=

其实等价于x &&= yx = x && y

当值为 true 时才赋值

逻辑或赋值||=

等价于x ||= yx = x || y

当值为 false 时才赋值

空值合并赋值??=

等价于x ??= yx = x ?? y

保留 0/空字符/假值,当值为 null 或 undefined 时才赋值

js 复制代码
let username = null;
username ??= 'Guest'; // 结果: 'Guest'

我看还有一些人介绍!!运算符,其实这个不算新加入的,甚至不是一个整体的运算符,他一直存在,只不过是利用了!的特性,做的一种常用写法

相关推荐
少年姜太公3 小时前
什么?还不知道git cherry pick?
前端·javascript·git
白兰地空瓶5 小时前
🏒 前端 AI 应用实战:用 Vue3 + Coze,把宠物一键变成冰球运动员!
前端·vue.js·coze
Liu.7746 小时前
vue3使用vue3-print-nb打印
前端·javascript·vue.js
松涛和鸣7 小时前
Linux Makefile : From Basic Syntax to Multi-File Project Compilation
linux·运维·服务器·前端·windows·哈希算法
dly_blog7 小时前
Vue 逻辑复用的多种方案对比!
前端·javascript·vue.js
万少7 小时前
HarmonyOS6 接入分享,原来也是三分钟的事情
前端·harmonyos
烛阴7 小时前
C# 正则表达式:量词与锚点——从“.*”到精确匹配
前端·正则表达式·c#
wyzqhhhh8 小时前
京东啊啊啊啊啊
开发语言·前端·javascript
JIngJaneIL8 小时前
基于java+ vue助农电商系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
想学后端的前端工程师8 小时前
【Java集合框架深度解析:从入门到精通-后端技术栈】
前端·javascript·vue.js