Не делайте функции внутри цикла. - ошибка jslint

Я получаю эту ошибку jslint

Не делайте функции внутри цикла.

Я не могу изменить javascript, который вызывает эту проблему, однако я не могу из-за ограничений на его изменение.

Итак, я хочу отключить эту проверку, чтобы проверить наличие этой ошибки в конкретном файле javascript.

Возможно ли это сделать для этой ошибки js?


person amateur    schedule 28.07.2011    source источник
comment
Вы говорите jslint в заголовке, но jshint в тексте вопроса. Что он?   -  person Pointy    schedule 29.07.2011
comment
Зачем вам ДОЛЖНЫ создавать функцию в цикле? Не могли бы вы показать нам код, который вы используете?   -  person mowwwalker    schedule 29.07.2011


Ответы (1)


Нет, эта проверка не является обязательной.

Возможный обходной путь:

// simple closure scoping i to the function.
for(var i = 0; i < 10; i++) {
    (function (index) {
         console.log(index);
     }(i));
}
// this works, however it's difficult to site read and not a blast to debug

Решение:

// same exact output
function logger(index) {
    console.log(index);
}

// same output. Minus declaring all vars at the
// top of the function and console this passes jslint.
for(var i = 0; i < 10; i++) {
    logger(i);
}
person Joe    schedule 28.07.2011
comment
Но разве для этого нет очень веских оснований? Например, закрыть текущее значение цикла для создания набора функций обратного вызова? - person Alex Wayne; 29.07.2011
comment
JSLint — это не конец всего javasript. Хотя это очень хороший путеводитель. Бывают случаи, когда необходимо использовать даже самые злые функции javascript, такие как eval. - person Joe; 29.07.2011