可选链?.

可选链存在的意义

即使是最细心的程序员,也可能会不经意去访问一个不存在或者为空的值,导致代码报错。在没有可选链的时代,&&操作符通常是这个问题的最佳解决办法。
假如需要去访问一个user.name属性,可以采用下面的写法:

user&&user.name;

当&&左边的值为真时,就返回右边的值;当左边的值为假时,直接返回假。上面的代码中只有user存在的时候才会继续访问它的name属性。
在es6中,引入了可选链的概念,优化了上面的&&操作。

user?.name

使用上图可选链的写法,会先判断user是否存在,如果存在就访问他的name属性,如果没有存在就返回undefined。
可选链的作用和开头的&&操作用处相差无几,只是后者的一种优化。
你可能还没体会到它优化了什么,下面举个例子:

//你要访问的属性
user.company.address
//&&写法
user&&user.company&&user.company.address
//?.写法
user?.company?.address

漫天遍地的可选链?

可选链能够先判断前面的对象是否存在,如果不存在就不会执行后面的语句,然后直接返回undefined,不会因为访问到不存在的对象报错,增强了代码的健壮性。
可选链用来判断问号前面的值是否存在,如果在程序中所有访问属性的地方都用上可选链,那程序报错的个数就会大大降低。
但是,如果漫天遍地都用可选链,就会错失重要的报错信息。

如果在逻辑里一定会存在的数据上使用了可选链,当这个数据缺失时,我们就无法及时发现错误,平白浪费了精力时间。最好的做法是只在逻辑中可能会出现空值的地方使用可选链。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值