js的一些运算符规则

?? 是根据 null 和 undefined 判断的,

|| 是根据 布尔值 false 判断的, 左侧为true 不看右侧

&& 左侧为false 不看右侧

?. "可选链操作符",允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。在引用 null 或者 undefined 的情况下不会引起错误(主要是用于防止报错!)

一、&& 是与运算,左侧true返回右侧,左侧false直接返回左侧

let aa = true && false // aa是 false

let aa = false && true // aa是false

二、|| 是或运算,左侧true返回左侧,左侧false直接返回右侧

let aa = true || false // aa是true

let aa = false || true // aa是true

三、??空值合并操作符,只有当左侧是null和undefind,才会返回右侧,其余情况返回左侧,和 || 运算符类似,又有不同 || 运算符当左侧是假值的情况就会返回右侧,如 0 或者 ""

let aa = null ?? 1 // aa是1

let aa = null || 1 // aa是1

let aa = undefind ?? 1 // aa是1

let aa = undefind || 1 // aa是1

let aa = 0 ?? 1 // aa是0

let aa = 0 || 1 // aa是1

let aa = "" ?? 1 // aa是""

let aa = "" || 1 // aa是1

四、?.可选链操作符 a?.b 当a存在是返回a.b

let a = {}

let aa = a?.b // aa是undefind

let aa = a?.b ?? 123 // aa是123

let a = {b:1}

let aa = a?.b // aa是1

相关推荐
hewins6 分钟前
NestJS 从入门到精通
javascript
柒和远方10 分钟前
LeetCode 452. 用最少数量的箭引爆气球 —— 区间贪心经典:排序 + 扫描一箭穿心
javascript·python·算法
用户74595717484011 分钟前
Fabric:Python SSH 远程执行利器
前端
青春:一叶知秋16 分钟前
【C++】protobuf序列化与反序列化
开发语言·c++
用户2883919274720 分钟前
Elasticsearch DSL:用 Python 对象写查询,不用再手写 JSON
前端
小小龙学IT20 分钟前
Drizzle ORM:TypeScript 生态中冉冉升起的数据库工具链引言
javascript·数据库·typescript
一拳小和尚LXY1 小时前
我开发了一款免费 Chrome 插件 TabScribe:一键复制所有标签页为 Markdown/JSON,完全离线零追踪
前端·chrome·json
dust_and_stars1 小时前
ubuntu24上安装chrome和edge浏览器
前端·chrome·edge
恋猫de小郭1 小时前
Android 官方给 Compose 搞了个不需要 UI 环境的 Composable
android·前端·flutter
老王以为1 小时前
我的多屏编程工作流:从切窗口到空间锚定
前端