Efectivamente, necesitas hacer un
closure, para lo cual son útiles las funciones anónimas:
Código Javascript
:
Ver originalvar funcs = [];
for (var i = 0; i < 3; i++) {
(function(j){
funcs.push(function () {
var index = j;
console.log(index);
});
})(i);
}
for (var i in funcs) {
funcs[i]();
}
Lo anterior imprimirá: 0, 1, 2. No imprime el 3 porque el bucle va desde el 0 hasta antes del 3.
Saludos