可选链操作符?. -- 完成

2023-06-13  本文已影响0人  浅浅_2d5a

.为链式操作符
?.为可选链式操作符

应用到属性上

const room= {
student: {
name: '张三'
}
}
var age1 = room.student.name
var age2 = room.student2.name 会报错
Cannot read properties of undefined (reading 'name')
需要加判断
var age2 = room.student2 && room.student2.name 麻烦
使用可选链操作符
var age2 = room.student2?.name
当room上student2为undefined时候,直接短路返回undefined
使用[]访问属性,可以使用可选链
obj?.['name']
可选链不能被赋值
obj2?.money = 20
报错:Invalid left-hand side in assignment

应用到方法上

var obj = {
fn:1
}
obj.fn2?.()
obj.fn2为假的时候 返回undefined
obj.fn2为非函数的时候, obj.fn2?.() 依旧报错
任何形式的


image.png

都可以使用可选连写法
onError?.(err.message)

应用到数组某一项

arr?.[30]

应用到Map实例中

let myMap = new Map()
myMap.set('foo': {name:'san',age:10})
var tooName = myMap.get('too')?.name

可选链操作符可以连用

let zhangsanAge = room1.student?.no1?.age
属性和方法中的连用
let zhangsanAge = room1.student?.game?.()

上一篇下一篇

猜你喜欢

热点阅读