亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

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深入淺出
  • 參與學習       281092    人
  • 解答問題       1054    個

由淺入深學習JS語言特性,且解析JS常見誤區,從入門到掌握

進入課程

JS屬性讀寫問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號