ECMAScript2020 可选链操作符(?.)的应用

一、前言

    const programmer = {
        user: 'lin',
        department: {
            name: '技术部',
            getSite() {
                return '***'
            }
        }
    }

在以前的语法中,想要获得深层次的属性或方法,如果不做前置校验的话,那么就很容易出现这种错误↓ 这可能会导致你整个应用奔溃…

在这里插入图片描述

二、如果是你的话会以怎样的写法进行判断呢?

可能是这样的…

const site = programmer && programmer.department &&  programmer.department.getSite && programmer.department.getSite()
console.log(site);

也可能是这样的…

const site = programmer ? (programmer.department ? (programmer.department.getSite ? (programmer.department.getSite()) : '') : '') : ''
console.log(site);

显然,这些写法并不是很优雅,而且可读性也差。

那么还有怎样优雅的写法?

三、可选链操作符(?.)的应用

让我们来看看MDN是怎么描述的
在这里插入图片描述
那么当我们使用了可选链操作符,之前的代码就可以写成这样了:

    const site = programmer?.department?.getSite?.()
    console.log(site);

四、总结

可以看出,在探索一个对象的内容时,如果不能确定哪些属性必定存在,可选链操作符也是很有帮助的,而且还可以大量简化类似繁琐的前置校验操作,更加安全。


如果您也正在学习前端的路上,记得关注该博主,学习更多关于前端的知识~

博主主页 Poetic Code

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值