0

したがって、JSHintは、ループ内で関数を作成するべきではないと言っています。次に、通常、ループの外側で関数を作成します。

しかし今、私はこれがより難しい部分を持っています:

for (r=0;r<x;r++) {
    for (c=0;c<y;c++) {
        var arr = [c,r];
        setTimeout( (function(arr) { return function() { doSomething(arr); };})(arr), 50+c*550 + r*230 );
    }
}

JSHint警告が表示されないように、この部分をリファクタリングするにはどうすればよいですか?

4

1 に答える 1

5

簡単です:

for (r=0;r<x;r++) {
    for (c=0;c<y;c++) {
        var arr = [c,r];
        setTimeout( proxy(arr), 50+c*550 + r*230 ); 
    }
}

function proxy(arr){
    return function(){
        doSomething(arr);
    };
}
于 2012-07-06T08:47:22.443 に答える