嗨,我有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不抛出警告
可能应该很少或理论上。在大多数情况下(像这一样),这个提示根本没用,可以安全地忽略(或禁用)。
罕见的情况是这样的:
for(var i = 0; i < 10; i++) { // loop
setTimeout(function() { // callback
console.log(i); // outer reference
}, 100);
}
在这种情况下,JSHint会尝试警告你,但是触发此合理情况警告的场景经常发生,然后警告根本没用(就像jQuery的全局一样)。