課程
/前端開發
/JavaScript
/JavaScript深入淺出
這里obj.y.z什么意思,學JAVA沒見過這么調用屬性的,另外為什么上面var yz=obj.y.z不成立
下面的卻可以成立,什么原因?
2016-01-05
源自:JavaScript深入淺出 4-3
正在回答
其實這里是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 一樣,只是一個判斷,只不過判斷的更加嚴謹。
望樓主采納!
慕斯卡4106679 提問者
慕萊塢9220042 回復 慕斯卡4106679 提問者
鍵值對形式像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里面的主體。所以不會報錯。
舉報
由淺入深學習JS語言特性,且解析JS常見誤區,從入門到掌握
1 回答屬性讀寫的問題
2 回答對象屬性問題
2 回答屬性刪除問題
1 回答關于arguments屬性的問題
3 回答自身屬性和原型屬性
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-01-05
其實這里是obj里有y這個屬性,這個y屬性是一個對象,里面還有屬性z,所以。。。
2016-01-05
你好,老師講的很清楚了,這里的?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 一樣,只是一個判斷,只不過判斷的更加嚴謹。
望樓主采納!
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里面的主體。所以不會報錯。