获得以下错误
Uncaught Typerror : Cannot read property 'foo' of undefined
违规行是
s2 = targets[j].foo*4;
显然我应该修复问题的根源,但与此同时,我如何正确包装违规行,这样才不会抛出错误并破坏我的应用程序?
答案 0 :(得分:0)
错误的可能原因是该特定索引的targets[j]
为空。
试试这个
s2 = targets[j] && targets[j].foo ? targets[j].foo * 4 : 0;
如果targets[j]
为空或未定义,您可以在此处将s2的值设置为默认值(我将其设置为0)。
同样,这只会修复症状,但不会解决问题的根源。
答案 1 :(得分: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
但你是对的,你应该找到根本原因。