在寫的js中測試時遇到了Uncaught TypeError: Cannot read property ‘substr’ of undefined的問題,js關鍵代碼為:
var Img = data[i].technician.portrait;//后台接收到的圖片src的地址 //alert(typeof Img); if (Img!= '' || Img != undefined) { Img = SYS + Img.substr(1); //實現image的src的拼接 } else { Img = '--'; }
其中是if在判斷時出了問題,因為從后台傳輸過來數據為
Img=undefined;(存在technician這個對象不存在portrait屬性)
Img != undefined這樣的判斷是無效的。因此進入了條件為true的方法:
Img = SYS + Img.substr(1); Img不是對象,調用substr()方法就會出現問題
查閱一下資料才發現在判斷是否為undefined應該用typeof 不能直接判斷
代碼改為:
var Img = arr[i].technician.portrait; if (typeof Img != "undefined") { Img = SYS + Img.substr(1); } else { Img = ''; }
不過在谷歌測試發現寫成if(Img == undefined)也是能編譯成功的
不過為了避免后台沒有傳值過來,可以進一步優化代碼:
var Img = arr[i].technician.portrait||'--';//避免傳過來Img為undefined或者null導致的編譯錯誤 Img = SYS + Img.substr(1);
