cartList?.[shopId]?.[item._id]?.count
老师为什么这里既有中括号又打点呢?
20
收起
正在回答
2回答
同学你好,可以理解为这里是比较特殊,另外,也可以再仔细看下老师的回答,其中:
?. 是一个整体,意思是尝试访问对象的属性之前检查对象是否存在。
当访问对象的属性保存在变量中时,需要中括号[]语法
祝学习愉快~
好帮手慕慕子
2021-08-30 10:44:12
同学你好,对于你的问题解答如下:
1、?.意思是尝试访问对象的属性之前检查对象是否存在,防止在对象不存在时访问属性导致代码报错。例如:obj ?. age 可以简单的理解为它的作用与三目运算符类似,即: obj?obj.age : undefined,如果obj对象存在,那么就返回obj的age属性值,否则的话返回undefined。
两者输出的结果一样,如下图所示:
2、因为要访问的对象属性保存在变量中,所以需要使用[]语法,例如:
正常访问对象下的属性,输出结果如下:
3、经过前面两条分析,了解?.和[]语法后,再来看同学粘贴的这句代码cartList?.[shopId]?.[item._id]?.count意思是:
先判断cartList对象是否存在,如果存在的话,再判断cartList对象下shopId保存的属性是否存在,如果存在的话,再判断cartList?.[shopId]下item._id保存的属性是否存在,如果存在的话,再判断count属性是否存在,存在的话,返回对应的值即可,如果其中有不存在的情况,直接返回undefined,而不是让代码报错。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星