可选链操作符、逻辑与、空值合并运算符

可选链操作符(?.)

首先我们的明白一点,以下代码会报错吗?

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() 的例子除外

posted @ 2022-08-30 10:20  朱在春  阅读(29)  评论(0编辑  收藏  举报