Есть несколько способов, которыми вы можете попытаться устранить эту ошибку.
Одна вещь, которая очень утомительна, но даст вам номер строки исключения, это код, который выглядит так:
foo();
console.log("Line 1");
bar();
console.log("Line 2");
baz();
console.log("Line 3");
и так далее, и если вы получите это в консоли:
Line 1
Line 2
Uncaught exception: undefined
тогда вы знаете, что baz() вызывал ошибку. Другой способ — использовать отладчик, например:
debugger;
foo();
bar();
baz();
и вы можете использовать отладчик firefox, чтобы просмотреть каждую строку и посмотреть, какая из них выдает ошибку на консоль.
Если у вас много кода, вы можете попробовать трюк «разделяй и властвуй», например:
var fooStr = foo();
var fooArr = fooStr.split("");
fooArr = fooArr.reverse();
foo(fooArr.join(""));
console.log("Block one");
var barStr = bar();
var barArr = barStr.split("");
barArr = barArr.reverse();
bar(barArr.join(""));
console.log("Block two");
var bazStr = baz();
var bazArr = bazStr.split("");
bazArr = bazArr.reverse();
baz(bazArr.join(""));
console.log("Block three");
Затем, если консоль выглядит так:
Block one
Uncaught exception: undefined
Тогда проблема в блоке 2. Тогда вы можете сделать это:
var barStr = bar();
console.log("Line 1");
var barArr = barStr.split("");
console.log("Line 2");
barArr = barArr.reverse();
console.log("Line 3");
bar(barArr.join(""));
console.log("Line 4");
console.log("Block two");
console.log("Line 5");
И если вы видите:
Line 1
Uncaught exception: undefined
Тогда вы знаете, что var barArr = barStr.split("");
это ваша проблема. С этого момента вы можете захотеть регистрировать значения переменных, например:
console.log(barStr);
var barArr = barStr.split("");
И если вы видите это в консоли:
undefined
Uncaught exception: undefined
Тогда вы знаете, что bar()
возвращает undefined
(вместо строки), у которого нет метода split
. Затем вы смотрите на код бара, чтобы определить, скажем, вы забыли параметр? Мэйби bar
выглядит так:
function bar(value){
return strings[value];
}
а strings
— это объект, в котором что-то есть. Следовательно, strings[undefined]
вернет undefined
, у которого нет метода split
. Ошибка устранена!
person
Community
schedule
19.01.2017