?. 、 ?? 、??= 以及&& 、|| 、!
今天看到这种写法,好奇的百度了下,做下相关的记录
?. ---可选链
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!