Все ошибки означают в JSHint / JSLint, что вы не объявили свою переменную ключ / итератор . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * [*], * * * * * * * * * * * * * * * * * * * * * * * 100 * * * * * * * * * * * * * * * 100 *
/*global data, identifier, DIVsuggestions */
// We'll pretend all of the above were passed in from a function's parameters
// by using JSLint's "global" keyword -- now you can paste this code into
// jslint.com and have it pass muster.
// make array
var sugested_sports = data.split(","),
sporty_items = '', // pre build DIV
sport; // <<<< **** DECLARE YOUR "KEY" HERE ****
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);
Эта ошибка bad for in variable
здесь сводится к той же, что и ошибка 'sport' was used before it was defined
в другом месте.
РЕДАКТИРОВАТЬ: Стоит отметить, что если ваш for
находится во внутренней функции, вам необходимо объявить переменную for in
в том же контексте. JSLint будет жаловаться, если вы объявите for in
в родительском контексте.
* * 1 022 Пример: * 1 023 *
function spam(d)
{
var fnTest, row; // `row` is defined "too early"
fnTest = function (data) {
for (row in data)
{
if (data.hasOwnProperty(row))
{
console.log(data.row);
}
}
};
fnTest(d);
}
Чтобы сделать вещи счастливыми, переместите row
во внутреннюю функцию. Хотя технически он все еще находился в области применения, JSLint не нравится «суперобласть», который использовался ранее.
function spam(d)
{
var fnTest;
fnTest = function (data) {
var row; // and JSLint is happy! ;^D
for (row in data)
{
if (data.hasOwnProperty(row))
{
console.log(data.row);
}
}
};
fnTest(d);
}
Кстати, беспокойство Джеймса покрывается проверкой
hasOwnProperty
, которую вставил OP. Уберите эту проверку, и JSLint будет жаловаться: «Тело for in должно быть заключено в оператор if для фильтрации нежелательных свойств из прототипа».
Вот еще немного о hasOwnProperty с for ... in, если вам интересно .