Javascript:循环外的重构函数

cla*_*amp 0 javascript jshint

所以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 );
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎么能重构这部分不得到JSHint警告?

Eng*_*eer 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);
    };
}
Run Code Online (Sandbox Code Playgroud)