美文网首页
可选链操作符?. -- 完成

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

作者: 浅浅_2d5a | 来源:发表于2023-06-13 15:45 被阅读0次

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

    应用到属性上

    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?.()

    相关文章

      网友评论

          本文标题:可选链操作符?. -- 完成

          本文链接:https://www.haomeiwen.com/subject/niwuedtx.html