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

相关推荐
AI人工智能+电脑小能手2 分钟前
【大白话说Java面试题 第97题】【Mysql篇】第27题:说说分库与分表的设计?
java·开发语言·数据库·分布式·mysql·算法
Vertira4 分钟前
VS2022 配置Qt5/6 [已解决]
开发语言·qt
RSTJ_162510 分钟前
PYTHON+AI LLM DAY SIXTY-SEVEN
开发语言·python
FuckPatience10 分钟前
C# 继承中的使用new的陷阱,和abstract /virtual 的不同
开发语言·c#
ofoxcoding12 分钟前
MiniMax M3 实测手记:踩完坑之后,我总结了报错处理和省 token 的几个办法
java·前端·人工智能·ai
hssfscv12 分钟前
QT的学习记录2
开发语言·qt·学习
阿坨18 分钟前
JavaScript异步编程:Promise与async/await
javascript
YG亲测源码屋19 分钟前
html表白代码大全可复制免费 html表白网页制作源码
前端·html
ch.ju19 分钟前
Java Programming Chapter 4——The set-get method.
java·开发语言
dog25020 分钟前
科斯定理与平坦随机网络的自然秩序
开发语言·网络·php