JSHint引用外部范围

时间:2019-03-09 17:38:25

标签: javascript jshint

嗨,我在使用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 :(得分:0)

可能应该很少是 理论上。在大多数情况下(像这样),该提示根本没有用,可以安全地忽略(或禁用)。

罕见的情况是这样的:

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

在这种情况下,JSHint会尝试警告您,但是触发这种合理情况的警告的情况经常发生,因此警告根本没有用(就像jQuery的global一样)。