mi pregunta es en realidad una de comprensión - Tengo una solución de trabajo, simplemente no entiendo cómo funciona.Preguntas de comprensión del Alcance Global Variable
Bien, entonces, lo que estoy tratando de hacer es agregar un setTimeout en un bucle, y pasar un valor cambiante a través de él. Ejemplo:
for (i=0;i<11;i++)
{
setTimeout("alert(i)",1000);
}
si he entendido correctamente, esto no funciona porque Javascript no lo hace (como PHP) pasar el valor de i a la función, pero pasa una referencia de i - que a su vez no es estática, sino que continúa para cambiar con el contador.
he encontrado una solución, que dice así:
for (i=0;i<11;i++)
{
setTimeout(function(x){return function(){alert(x)};}(i),1000);
}
yo no entiendo muy bien lo que esto hace realidad. Parece que pasa la función de "alerta" a la función de llamada, pero no puedo entenderlo.
Puedo trabajar con esta solución y también adaptarla a otros contextos, pero realmente me gustaría entender todo mi código, no solo usar cosas que encontré en algún lado y ser feliz de que funcione. Y, además, estoy buscando una versión más delgada para lograr el mismo objetivo.
Gracias, Marco
+1 para "Realmente me gustaría entender todo mi código, no solo usar cosas que encontré en algún lado y ser feliz de que funcione" –