2013-12-09 87 views
0

未捕獲Typerrors收到以下錯誤追趕的Javascript

Uncaught Typerror : Cannot read property 'foo' of undefined 

出錯行是

s2 = targets[j].foo*4; 

很顯然,我應該可以解決問題的根源,但在此期間,我怎樣才能正確地包裹有問題的行,所以它不會拋出一個錯誤,並打破我的應用程序?

回答

0

在try catch中包裝代碼可以讓你處理這樣的問題。

try { 
    s2 = targets[j].foo * 4; 
} catch (exception) { 
    console.error(exception.stack); 
} 

而不是

Uncaught ReferenceError: targets is not defined 

(因爲我甚至不具有既定目標),我現在得到

ReferenceError: targets is not defined 
    at snippets:///424_2145:2:10 

但你說的沒錯,你應該找到問題的根源。

0

錯誤的可能原因是該特定索引的targets[j]爲空。

試試這個

s2 = targets[j] && targets[j].foo ? targets[j].foo * 4 : 0; 

這裏您可以S2的值設置爲默認值(我將其設置爲0),如果targets[j]爲空或未定義。

再次,這隻會解決症狀,而不是問題的根源。