JSHint错误:在循环中声明的函数引用外部范围的变量可能会导致语义混乱

时间:2017-10-03 06:48:59

标签: javascript closures jshint

是否有可能解释为什么这段代码会抛出这样的错误ECMA 6现在不是一个选项,我也尝试将内部$ .each函数放入一个闭包IIFE中,将i的值保存到一个闭包内的内部变量。请帮忙!

for(var i = 0; i < cityArray.length; i++) {
    $.each(_cityCards, function(index, item) {
        var cityName = $(this).attr('data-city');
        if(cityName == cityArray[i]) {
            $(this).css('transform','scale(1)').delay(500).show();
        }
    });
}

1 个答案:

答案 0 :(得分:1)

像JSHint这样的声音并不像是如何反复重新创建匿名函数。

如果您尝试拔出匿名函数并为其命名,该怎么办?

然后在循环体中引用这个命名函数?

即。像

function func (index, item) {
  var cityName = $(this).attr('data-city');
  if(cityName == cityArray[i]) {
    $(this).css('transform','scale(1)').delay(500).show();
  }
}

for(var i = 0; i < cityArray.length; i++) {
    $.each(_cityCards, func);
}