可选链操作符、逻辑与、空值合并运算符
可选链操作符(?.)
首先我们的明白一点,以下代码会报错吗?
let obj = {}
let a = obj.name
console.log(a);
那么,以下代码呢?
let obj = {}
let a = obj.name.firstName
console.log(a);
再有这个呢?
let obj = {}
let a = obj.name?.firstName
console.log(a);
这个输出什么?
let obj = {
name: 'jack'
}
let a = obj.name?.firstName
console.log(a);
?.
操作符的功能类似于.
链式操作符,不同之处是,在 undefined.xxx 的时候不会抛出异常,它只是返回 undefined,这就是它的神奇之处没有异常,就意味着代码不会挂
它跟 逻辑与(&&) 类似,但可选链操作符更短、更简明
逻辑与(&&)
猜猜它会输出什么?
let obj = {
name: 'jack'
}
let a = obj.name && obj.name.firstName
console.log(a);
空值合并运算符(??)
当左侧的操作数为 null
或者 undefined
时,返回其右侧操作数,否则返回左侧操作数。
布尔转换(!!)
let boolean = !!sessionStorage.getItem('token')
// 相当于
let boolean = sessionStorage.getItem('token') ? true : false
字面意思,就是将 null
、''
、undefined
等一些值转换为它们对应的 true 或 false。比如 null
,!!null
就是先 !null
,得到 true
,然后再 !true
,最终得到 false
在js中( if 判断时),以下内容会被当成 false 处理:
'', false, 0, null, undefined, NaN
以上内容都可以在 MDN 搜到的,使用以上操作符的目的主要是让代码不报异常,类似于 cb && cb() 的例子除外
这一路,灯火通明
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了