Maximale Call-Stack-Größe überschritten Fehler in JavaScript | Erklärt

Maximale Call Stack Grosse Uberschritten Fehler In Javascript Erklart



Rekursive Funktionen sind Funktionen, die eine Methode innerhalb einer anderen Methode aufrufen. Eine unendliche Rekursion verursacht jedoch einen Stapelgrößenfehler. Der Stapelgrößenfehler tritt auf, weil viele Anforderungen anstehen. Dieses Problem tritt auf, wenn die Funktion selbst aufgerufen wird. In Anbetracht dessen erklärt dieser Artikel, dass die maximale Call-Stack-Größe den Fehler in JavaScript überschreitet. Darüber hinaus wird auch die Lösung bereitgestellt, um den Fehler zu beheben.

Der Artikel dient uns wie folgt:







  • Maximale Call-Stack-Größe überschritten Fehler in JavaScript
  • Verwendung der if-Bedingung zum Auflösen des Fehlers „Maximale Aufrufstapelgröße überschritten“.
  • Verwenden der for-Schleife zum Auflösen des Fehlers „Maximale Aufruflistengröße überschritten“.

Maximale Call-Stack-Größe überschritten Fehler in JavaScript

Der Fehler Stapelgröße überschritten tritt auf, wenn der Benutzer die rekursive Funktion aufruft. Diese Art von Fehler tritt auf, wenn eine Methode wiederholt aufgerufen wird. Das fun_user() wird als rekursiver Aufruf innerhalb der Funktion verwendet fun_user() in JavaScript, um einen Fehler im Konsolenfenster zu generieren.



Code



Konsole.log ( 'Maximale Call-Stack-Größe überschritten' ) ;
fun_user ( ) ;
Funktion fun_user ( )
{
fun_user ( ) ;
}





In diesem Code ist die Fehler „maximale Call-Stack-Größe überschritten“ wird durch Aufruf einer Methode erzeugt „fun_user()“ innerhalb der Funktion.



Der Code zeigt den Fehler als an „RangeError: Maximale Call-Stack-Größe überschritten.“

Es gibt viele Möglichkeiten, diesen Fehler zu beheben, z für Schleife und bedingte Aussagen , mit der der Funktionsaufruf eingeschränkt werden kann.

Lösung 1: Verwenden der if-Bedingung zum Auflösen des Fehlers „maximale Aufrufstapelgröße überschritten“.

Um den Fehler zu beheben, wird die if-Bedingung angewendet, um die Stapelgröße in JavaScript einzuschränken. Der Code ist beispielsweise unten angegeben.

Code

war ich = 1 ;
fun_user ( ich ) ;
Funktion fun_user ( ich ) {
wenn ( ich < = 10 )
{
Konsole.log ( 'Willkommen bei JavaScript' ) ;
ich =ich+ 1 ;
fun_user ( ich ) ;
} }

Die Beschreibung des Codes lautet wie folgt:

  • Erstens eine Variable 'ich' wird mit dem Wert 1 initialisiert.
  • Danach, fun_user() Methode wird verwendet, indem die Variable übergeben wird 'ich'.
  • Wenn in dieser Funktion eine Bedingung angewendet wird, die die Iteration auf beschränkt 10 .
  • Endlich die Botschaft „Willkommen bei Javascript“ wird mit angezeigt „console.log()“ Methode.

Ausgabe

Lösung 2: Verwenden der for-Schleife zum Beheben des Fehlers „Maximale Aufrufstapelgröße überschritten“.

Um den Fehler zu beheben, wird eine for-Schleife verwendet, um die Iterationen in JavaScript zu begrenzen. Der Code ist beispielsweise unten angegeben.

Code

Lassen Ausgang = 0 ;
zum ( Lassen ich = 5 ; ich > 0 ; ich-- )
{
Ausgang += add ( 1 , 1 ) ;
}
Funktion hinzufügen ( ein, b ) {
Rückkehr a + b;
}
Konsole.log ( Ausgang ) ;

In diesem Code:

  • Die Variable 'Ausgang' wird mit dem Wert 0 initialisiert.
  • Danach wird eine for-Schleife verwendet, um fünf Iterationen durchzuführen. In dieser Schleife wird die hinzufügen() Die Methode wird aufgerufen, indem der Wert 1 übergeben wird.
  • Die Methode hinzufügen() gibt die Addition von zwei Variablen zurück a und b .
  • Am Ende ist die Protokoll() -Methode wird verwendet, um die Ausgabe im Konsolenfenster anzuzeigen.

Ausgabe

Die Ausgabe kehrt zurück „10“ durch Beheben des Fehlers der maximalen Call-Stack-Größe in JavaScript.

Fazit

Der unendliche Aufruf von rekursiven Funktionen tritt als auf Fehler „maximale Call-Stack-Größe überschritten“ in JavaScript. In diesem Artikel werden die Ursachen für diese Art von Fehler erläutert. Danach zwei Lösungen, darunter „for-Schleife“ und 'bedingte Aussagen' verwendet werden, um den Fehler zu beheben. Daher werden die Aufruffunktionen durch den Einsatz dieser Lösungen eingeschränkt.