为了账号安全,请及时绑定邮箱和手机立即绑定

JS属性读写问题

这里obj.y.z什么意思,学JAVA没见过这么调用属性的,另外为什么上面var yz=obj.y.z不成立

下面的却可以成立,什么原因?

正在回答

3 回答

其实这里是obj里有y这个属性,这个y属性是一个对象,里面还有属性z,所以。。。

0 回复 有任何疑惑可以回复我~

你好,老师讲的很清楚了,这里的 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 一样,只是一个判断,只不过判断的更加严谨。

望楼主采纳!

0 回复 有任何疑惑可以回复我~
#1

慕斯卡4106679 提问者

var yz; if(obj.y){ yz=obj.y.z;} 以上是if判断语句只能确定obj有y属性,但是不能确定有z属性啊。 另外obj.y返回的应该是y的值吧,怎么能作为判断的条件呢?判断的条件要返回true or false才行啊
2016-01-05 回复 有任何疑惑可以回复我~
#2

慕莱坞9220042 回复 慕斯卡4106679 提问者

这里是将 obj.y.z 的值赋给 yz,如果没有,就给yz赋值false,有的话就给赋值了,不会报错; 第二个问题:obj.y 如果放到if判断里的意思就是如果obj里有y,则返回ture,如果没有,则返回false;
2016-01-05 回复 有任何疑惑可以回复我~

键值对形式像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里面的主体。所以不会报错。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JavaScript深入浅出
  • 参与学习       281112    人
  • 解答问题       1020    个

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

进入课程

JS属性读写问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信