JSHint ссылается на внешнюю область видимости - PullRequest
0 голосов
/ 09 марта 2019

Привет, у меня проблема с JSHint, потому что всегда получается

Функции, объявленные в циклах, ссылающихся на внешнюю переменную области действия, могут привести к путанице в семантике.($, итоги).Мой вызов функции

var a;
a.each(function (c) {
    if (c.length == 0) return;
    for (var index in c) {
        var test = {};

        a.each(function (e) {
            var idx = $(e).data('index');
            if (idx in test) {
                test[idx] += $(e).data('key');
            } else {
                test[idx] = $(e).data('key');
            }
        });
    }
});

Я знаю эту проблему, потому что я получаю доступ к тестовой переменной в обратном вызове, но есть ли решение для этого, что-то, чтобы переписать код или сказать JSHint, чтобы не выдавать предупреждение

1 Ответ

0 голосов
/ 09 марта 2019

может скорее должно быть редко или теоретически .В большинстве случаев (например, в этом) эта подсказка вообще не нужна и может безопасно игнорироваться (или отключаться).

Редкий случай выглядит примерно так:

 for(var i = 0; i < 10; i++) { // loop
   setTimeout(function() { // callback
      console.log(i); // outer reference
   }, 100);
}

иJSHint пытается предупредить вас в этом случае, но сценарий, который вызывает предупреждение для этого разумного случая, встречается очень часто, а затем предупреждение вообще бесполезно (как в случае с глобальным jQuery).

...