?. 、 ?? 、??= 以及&& 、|| 、!

image

今天看到这种写法,好奇的百度了下,做下相关的记录

?. ---可选链

a=b?.name
//等价于
if(!!b){
a = b.name;
}else{
a = undefined;
}
//判断b是否存在(null、undefined的除外),
//存在的话 b.name赋值给a,
//否则(当b 为null、undefined时), undefined直接赋值给a

?? ---空值合并运算符

?? 有点类似于 || 或运算符
他们的不同之处在于 ?? 只会判断 null undefined
|| 把数字0也算进false里面了

a=b??c
等价于
if(!!b||b===0){
a=b
}else{
a=c
}

??= 空值赋值运算符

当??=左侧的值为null、undefined的时候,才会将右侧变量的值赋值给左侧变量

let b = '张三';
let a = 0
let c = null;
let d = '李四'
a??=b // 0
c??=d //李四

&& 、|| 、! 且或非运算符

&& 是当&&左侧判断为true时 才会走到&&右侧
|| 是当&&左侧判断为false时 才会走到&&右侧
! 是当前的属性 进行布尔值取反操作

它们相对上面的运算符 他们会把0 ,NAN 算到false里面
&& 且

let a
let b='zhangsan'
let c='lisi'
a=b&&c //lisi
let e
let d=undefined
e=d&&c //undefined

|| 或

let a
let b='zhangsan'
let c='lisi'
a=b||c //zhangsan
let e
let d=undefined
e=d||c //lisi

! 非

let a
let b='zhangsan'
!a //true
!b //false
!!b //true
posted @   xiao旭  阅读(341)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示