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

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

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'

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

相关推荐
IT_陈寒2 小时前
Python搞不定字符串编码?这破玩意坑我两小时!
前端·人工智能·后端
To_OC2 小时前
LC 1 两数之和:面试第一道必考题,暴力解法直接被面试官 pass
javascript·算法·leetcode
DigitalOcean3 小时前
Laravel 开发者已在 DigitalOcean 上开通超过 10 万台服务器
前端·laravel
星始流年3 小时前
从 Tool 到 Skill——基于 LangChain 的服务端Skill实现
前端·langchain·agent
李惟3 小时前
开源本地通信库,纯客户端 RPC,像聊天一样通信
前端
YAwu113 小时前
深入解析 React 炫彩鼠标跟随标题组件:从坐标定位到动画性能
前端·react.js
GuWenyue3 小时前
排序效率低?5分钟吃透快速排序,性能飙升至O(nlogn)
前端·javascript·面试
OpenTiny社区3 小时前
🎨 看完 GenUI SDK 源码我悟了!
前端·vue.js·github
叁两3 小时前
前端转型AI Agent该如何学习?(前置篇)
前端·人工智能·node.js
何时梦醒3 小时前
深入理解递归与快速排序 —— 从基础入门到手写实现
前端·javascript