moje pytanie jest w rzeczywistości jednym ze zrozumienia - mam działające rozwiązanie, po prostu nie rozumiem, jak to działa.Zmienny globalny zakres zrozumienia pytania
Okay, więc - próbuję to zrobić, dodając setTimeout w pętli i przekazując zmieniającą się wartość przez niego. Przykład:
for (i=0;i<11;i++)
{
setTimeout("alert(i)",1000);
}
Jeśli rozumieć prawidłowo praca ta nie robi ponieważ JavaScript nie (jak PHP) przechodzi wartość i do funkcji, ale przechodzi przez odniesienie I - która z kolei nie jest statyczny, lecz nadal zmienić z licznikiem.
znalazłem rozwiązanie, które idzie tak:
for (i=0;i<11;i++)
{
setTimeout(function(x){return function(){alert(x)};}(i),1000);
}
I naprawdę nie rozumiem, co to właściwie jest. Wygląda na to, że przekazuje funkcję "alertu" z powrotem do funkcji wywołującej, ale nie mogę tego zrozumieć.
Mogę pracować z tym rozwiązaniem, a także dostosować go do innych kontekstów, ale naprawdę chciałbym zrozumieć cały mój kod, a nie tylko użyć rzeczy, które gdzieś znalazłem i być szczęśliwym, że działają. A ponadto szukam szczuplejszej wersji, aby osiągnąć ten sam cel.
Dzięki Marco
+1 za "Naprawdę chciałbym zrozumieć cały mój kod, nie tylko użyć rzeczy, które gdzieś znalazłem i być szczęśliwym, że to działa" –