JSHint引用外部范围

问题描述 投票:0回答:1

嗨,我有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不抛出警告

javascript jshint
1个回答
0
投票

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

罕见的情况是这样的:

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

在这种情况下,JSHint会尝试警告你,但是触发此合理情况警告的场景经常发生,然后警告根本没用(就像jQuery的全局一样)。

© www.soinside.com 2019 - 2024. All rights reserved.