2017-10-03 12 views
0

このコードスニペットがこのようなエラーをスローする理由を説明することは可能ですか?ECMA 6は現在のところオプションではありません。 $。iの値をクロージャ内の内部変数に写像する閉包IIFE内の各関数。助けてください !JSHintエラー:スコープ外の変数を参照するループ内で宣言された関数は、意味が混乱する可能性があります。

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

JSHintのようなサウンドは、そこの無名関数が何度も何度も再作成されているのが好きではありません。

匿名関数を取り出して名前を付けるとどうなりましたか?

次に、この名前付き関数をループ本体で参照していますか?

I.e. like

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); 
} 
関連する問題