Andrea: Lokale Variable

Beitrag lesen

Hallo Stefan,

Bei Rekursion auf jeden Fall! Da ist Stack-Overflow in JavaScript genauso moeglich wie in anderen Sprachen. Und irgendwann passiert das auch. Nur weiss keiner wann genau. Das ist von Browser zu Browser verschieden und wahrscheinlich auch von der User-Umgebung abhaengig (verfuegbarer Arbeitsspeicher usw.). Rekursive Funktionsaufrufe sollte man daher unbedingt in ein window.setTimeOut("Funktion()",100) verpacken (die 100 sind hier nur ein Beispiel - das sind immer noch 10 Aufrufe pro Sekunde, aber schon deutlich weniger als "so viel wie moeglich"). Oder du definierst einen Maxwert und zaehlst bei jedem Funktionsaufruf einen Zaehler hoch und rufst die Funktion nur solange auf, wie der Zahler kleiner als der Maxwert ist. Wie hoch der Maxwert sein sollte? Keine Ahnung. Aber ein paar Tausend sollten auf jeden Fall drin sein.

Meine Loesung war, vorsichtshalber in der rekursiven Funktion vordefinierte globale Variablen zu verwenden. Nach meinem Verstaendnis reduziert sich damit die 'Last' auf dem Stack auf die Return-Adresse pro Aufruf. Trotzdem wird der Stack wohl irgendwann ueberlaufen. Realistisch gesehen bleibt aber wohl niemand so lange auf einer WebSite ...

Damit bleibt aber meine Frage bestehen, was der JS-Interpreter mit den lokalen Variablen macht. Freigeben oder festhalten?

Gruss,
Angel