Struppi: Wert-Übergabe bei window.setTimeout()

Beitrag lesen

Dann geht das so nicht, in dem Fall kannst du entweder mit einer anonymen Funktion arbeiten

Zur Erläuterung: Vielleicht sollte man dazu sagen, dass nicht der springende Punkt ist, dass die Funktion »anonym« ist. Man könnte ihr ruhig einen Namen geben, das ist nicht erheblich.

Das Stichwort lautet Closure. In der Funktion, die innerhalb einer anderen Funktion notiert wird, hat man Zugriff auf die lokalen Variablen der äußeren Funktion - auch wenn sie später außerhalb dieses Geltungsbereiches ausgeführt wird, wie es bei setTimeout der Fall ist.

Nur als Ergänzung, das funktioniert nicht im < IE 5.x und Netscape 4

Obwohl die äußere_funktion schon längst nicht mehr ausgeführt wird, wurden die lokalen Variablen, die beim Funktionsaufruf angelegt wurden, noch nicht aus dem Speicher gelöscht, denn innere_funktion (die in dem Fall global verfügbar gemacht wird) hat diese »eingeschlossen«.

Und hier ein Frage, es gibt ja diesen ewig langen Thread bei Quirksmode wegen addEvent (http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html), dort wird ja auch von Speicherlöchern im zusammenhang mit dem IE und closures (bzw. anonymen Funktionen) gesprochen. Ich bin dem ganzen nicht 100% nachgegangen, aber wenn ich das richtig verstanden habe (kann sein dass ich es nicht habe) hat der IE Probleme solche Variabeln wieder frei zu geben, oder trifft das nur unter manchen Umständen zu?

Struppi.

--
Javascript ist toll (Perl auch!)