js中Uncaught TypeError: Cannot read property 'substr' of undefined問題分析


在寫的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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM