慕斯卡4106679
2016-01-05 15:17
这里obj.y.z什么意思,学JAVA没见过这么调用属性的,另外为什么上面var yz=obj.y.z不成立
下面的却可以成立,什么原因?
其实这里是obj里有y这个属性,这个y属性是一个对象,里面还有属性z,所以。。。
你好,老师讲的很清楚了,这里的 obj.y.z 的意思是在obj对象里找到 y ,再在 y 里找到 z ,报错的原因是 obj 里没有 y ,更谈不上 y 里有没有 z 了,所以 obj.y 和 obj.y.z 都会报错;下面是做了一个判断 if(obj.y); 如果obj.y 成立,执行里面的操作,还有 var yz = obj && obj.y && obj.y.z; 根据&&的运行规则,是从左向右执行的,如果有一个不符合则不再继续执行,这里从左向右执行,依次是 obj,如果obj不存在,则返回false,如果存在继续执行 obj.y ,如果 obj.y 不存在,返回false,如果存在,则继续向右执行 obj.y.z,如果 obj.y.z 不存在,返回false ,如果 obj.y.z 存在则全部符合,执行下面的语句,这个 var yz = obj && obj.y && obj.y.z; 相当于obj.y 一样,只是一个判断,只不过判断的更加严谨。
望楼主采纳!
键值对形式像json一样,例如:var obj={x:1},那么obj.x=1;
如果 var obj={y:{z:1}},那么obj.y.z=1;外层可以嵌套。
因为obj.y是 undefined,说明obj.y没有被定义。所以也就不存在下面的属性。
下面加了判断,如果obj.y被定义了。才执行if里面的主体。所以不会报错。
JavaScript深入浅出
281111 学习 · 1020 问题
相似问题