可选链操作符(?.)
首先我们的明白一点,以下代码会报错吗?
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
时,返回其右侧操作数,否则返回左侧操作数。
标签:空值,obj,name,console,运算符,可选链,let,操作符,log From: https://www.cnblogs.com/zhumenglong/p/16638404.html以上内容都可以在 MDN 搜到的,使用以上操作符的目的主要是让代码不报异常,类似于 cb && cb() 的例子除外