У меня есть две анонимные функции, созданные внутри цикла, но jshint
дает предупреждение, когда функция anon ссылается на переменную, не переданную ей.Предупреждение jslint «Не выполнять функции внутри цикла» только для функций, ссылающихся на внешние переменные?
Почему это?
(function(){
for(var i=0; i<5; ++i){
var age = 9001;
//This has a jshint warning, as it uses age
var cutoffs = [1800,12000].map(function(cutoff){
return cutoff < age;
});
//but this doesn't cause a warning, despite creating a function inside a loop
var cutoffs2 = [1800,12000].map(function(cutoff){
return cutoff < 42;
});
}
})();
Просто проигнорируйте это, перевязка плохая и подумайте, что вы объявляете функцию внутри цикла. – Eric
@ Эрик Но я объявляю функцию внутри цикла, мне просто интересно, почему она не дает предупреждения для обеих функций, объявленных внутри цикла. – mtfurlan
Интересно, это потому, что функция сокращения не ссылается ни на что из закрытия - так может ли она быть оптимизирована во время выполнения? ничто не основано на этом, но это одно отличие между ними. –