Я получил эту ошибку, и не знайте то, что могло быть причиной. Какая-либо идея?
Проблема в строке 2 127 символов 18: Плохо для в переменном 'спорте'. для (спорт в sugested_sports)
// make array
var sugested_sports = data.split(",");
// pre build DIV
var sporty_items = '';
for (sport in sugested_sports)
{
if (sugested_sports.hasOwnProperty(sport)) {
sporty_items += '<a href="#'+identifier[1]+'">'+sugested_sports[sport]+'</a>';
}
}
// insert DIV
DIVsuggestions.html(sporty_items);
большое спасибо.
Try
var sport;
for (sport in sugested_sports)
Это позаботится о недостающем объявлении переменной и поместит ее вне цикла for (см. Ошибка jsLint "Cannot set property 'first' of undefined" ).
Ответ Пойнти, вероятно, тот, на который жалуется lint.
Как правило, вы должны быть осторожны при использовании для (... in ...)
. Люди часто путают эту конструкцию с foreach
из C # или другими подобными концепциями в других языках, хотя на самом деле это не связано. Конструкция javascript for in
выполняет итерацию каждого члена объекта, а не только значений в коллекции, включая методы и свойства. Такое поведение часто может приводить к неожиданным побочным эффектам, если вы заранее не знаете, как оно работает.
Например:
x = ['one', 'two'];
for (var value in x) {
alert(value);
}
Это дает два предупреждения, первое содержит 0
, а второе 1
, в частности индексы коллекции.
Если мы немного изменим это:
x = ['one', 'two'];
x.method = function() {};
for (var value in x) {
alert(value);
}
На этот раз мы получим три предупреждения: 0
, 1
и метод
. Я имел в виду неожиданное поведение. Можно использовать в
, если вы знаете, что он делает, но я не раз видел, как это улавливало людей.
Следующее работает с обоими примерами:
x = ['one', 'two'];
for (var i = 0; i < x.length; i++) {
alert(i);
}