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