Ejecutar el siguiente código:alcance JavaScript con cierre: me ayuda a entender
for (var i=0; i<3; i++) {
setTimeout(function() { console.log(i); } , 500);
}
Salidas "3" tres veces. Está emitiendo el valor final de i
en comparación con el valor de i
cuando se crea la función interna.
Si quiero que la salida sea 1, 2 y 3, ¿cómo escribiría este código? ¿Cómo puedo hacer que use el valor de i
en el momento en que se define la función en lugar de su valor final?
Este ejemplo utiliza dos funciones anónimas, mientras que la respuesta de @ z5h utiliza un nombre función, que puede ilustrar el concepto más claramente. – palswim