Stefan Muenz: Lokale Variable

Beitrag lesen

Hallo Angel

Rein theoretisch koennte ich doch bei JavaScript mit einer Funktion, die sich rekursiv immer wieder selber aufruft und lokale Variable verwendet, einen Stack-Overflow produzieren (wenn das Script lange genug laeuft). Muss ich mir sogar bei JS Gedanken um den Stack machen?

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.

viele Gruesse
  Stefan Muenz