Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Die JavaScript-Ausnahme „zu viel Rekursion“ oder „Maximale Aufrufstapelgröße überschritten“ tritt auf, wenn es zu viele Funktionsaufrufe gibt oder eine Funktion einen Basisfall vermisst.
InternalError in Firefox; RangeError in Chrome und Safari.
Eine Funktion, die sich selbst aufruft, wird als rekursive Funktion bezeichnet. Sobald eine Bedingung erfüllt ist, hört die Funktion auf, sich selbst aufzurufen. Dies wird als Basisfall bezeichnet.
In gewisser Weise ist Rekursion analog zu einer Schleife. Beide führen denselben Code mehrfach aus und beide benötigen eine Bedingung (um eine Endlosschleife bzw. in diesem Fall eine endlose Rekursion zu vermeiden). Wenn es zu viele Funktionsaufrufe gibt oder eine Funktion einen Basisfall vermisst, wirft JavaScript diesen Fehler.
Diese rekursive Funktion läuft 10 Mal, gemäß der Abbruchbedingung.
Das Setzen dieser Bedingung auf einen extrem hohen Wert funktioniert nicht:
Diese rekursive Funktion fehlt ein Basisfall. Da es keine Abbruchbedingung gibt, wird die Funktion sich unendlich oft selbst aufrufen.
Wenn ein Wert der Eigenschaft name zugewiesen wird (this.name = name;), muss JavaScript diese Eigenschaft setzen. Wenn dies geschieht, wird die Setter-Funktion ausgelöst.
In diesem Beispiel wird bei Auslösen des Setters derselbe Vorgang erneut angewiesen: die gleiche Eigenschaft zu setzen, die es zu bearbeiten gilt. Dies führt dazu, dass die Funktion sich selbst immer und immer wieder aufruft und dadurch unendlich rekursiv wird.
Dieses Problem tritt auch auf, wenn dieselbe Variable im Getter verwendet wird.
Um dieses Problem zu vermeiden, stellen Sie sicher, dass die Eigenschaft, die innerhalb der Setter-Funktion zugewiesen wird, sich von der unterscheidet, die den Setter ursprünglich ausgelöst hat. Gleiches gilt für den Getter.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.