cartList?.[shopId]?.[item._id]?.count

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,可以理解为这里是比较特殊,另外,也可以再仔细看下老师的回答,其中:

?. 是一个整体,意思是尝试访问对象的属性之前检查对象是否存在。

当访问对象的属性保存在变量中时,需要中括号[]语法

祝学习愉快~

好帮手慕慕子 2021-08-30 10:44:12

同学你好,对于你的问题解答如下:

1、?.意思是尝试访问对象的属性之前检查对象是否存在,防止在对象不存在时访问属性导致代码报错。例如:obj ?. age 可以简单的理解为它的作用与三目运算符类似,即: obj?obj.age : undefined,如果obj对象存在,那么就返回obj的age属性值,否则的话返回undefined。

http://img1.sycdn.imooc.com//climg/6040b543095e28a208800285.jpg


两者输出的结果一样,如下图所示:

http://img1.sycdn.imooc.com//climg/6040b54c099f794505990190.jpg

2、因为要访问的对象属性保存在变量中,所以需要使用[]语法,例如:

http://img1.sycdn.imooc.com//climg/612c449909d6455d08480205.jpg

正常访问对象下的属性,输出结果如下:

http://img1.sycdn.imooc.com//climg/612c44a90923a65303400143.jpg

3、经过前面两条分析,了解?.和[]语法后,再来看同学粘贴的这句代码cartList?.[shopId]?.[item._id]?.count意思是:

先判断cartList对象是否存在,如果存在的话,再判断cartList对象下shopId保存的属性是否存在,如果存在的话,再判断cartList?.[shopId]item._id保存的属性是否存在,如果存在的话,再判断count属性是否存在,存在的话,返回对应的值即可,如果其中有不存在的情况,直接返回undefined,而不是让代码报错。

祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师