Estoy muy confundido acerca de este código:¿JavaScript no admite cierres con variables locales?
var closures = [];
function create() {
for (var i = 0; i < 5; i++) {
closures[i] = function() {
alert("i = " + i);
};
}
}
function run() {
for (var i = 0; i < 5; i++) {
closures[i]();
}
}
create();
run();
Desde mi entender debe imprimir 0,1,2,3,4 (no es este el concepto de cierres?).
En su lugar, imprime 5,5,5,5,5.
Probé Rhino y Firefox.
¿Podría alguien explicarme este comportamiento? Thx por adelantado.
Entonces, ¿cuál sería su solución (tengo curiosidad ahora también)? –
La respuesta de Jon tiene la solución. –
Es un buen artículo, pero parece que existen algunas diferencias en cómo se implementan cierres entre C# y Javascript. Esto hace que el artículo no sea tan útil con respecto a la pregunta del OP. –