Maximale call-stackgrootte overschreden Fout in JavaScript | uitgelegd

Maximale Call Stackgrootte Overschreden Fout In Javascript Uitgelegd



Recursieve functies zijn functies die een methode binnen een andere methode aanroepen. Oneindige recursie veroorzaakt echter een fout in de stapelgrootte. De fout in de stapelgrootte treedt op omdat er veel verzoeken in behandeling zijn. Dit probleem doet zich voor bij het aanroepen van de functie zelf. Door dit te overwegen, legt dit artikel uit dat de maximale call-stackgrootte de fout in JavaScript overschrijdt. Bovendien wordt de oplossing ook geboden om de fout op te lossen.

Het artikel dient ons als volgt:







  • Maximale call-stackgrootte overschreden Fout in JavaScript
  • Als voorwaarde gebruiken om de maximale aanroepstackgrootte op te lossen fout
  • For-lus gebruiken om de maximale call-stackgrootte op te lossen.

Maximale call-stackgrootte overschreden Fout in JavaScript

De fout stapelgrootte overschreden treedt op wanneer de gebruiker de recursieve functie aanroept. Dit type fout treedt op als gevolg van het herhaaldelijk aanroepen van een methode. De fun_user() wordt gebruikt als een recursieve aanroep binnen de functie fun_user() in JavaScript om een ​​fout in het consolevenster te genereren.



Code



console.log ( 'Maximale call-stack-grootte overschreden' ) ;
fun_user ( ) ;
functie fun_user ( )
{
fun_user ( ) ;
}





In deze code wordt de 'maximale call-stackgrootte overschreden fout' wordt gegenereerd door een methode aan te roepen “leuke_gebruiker()” binnen de functie.



De code geeft de fout weer als: 'RangeError: maximale call-stackgrootte overschreden.'

Er zijn veel manieren om deze fout op te lossen, zoals: for loop en Voorwaardelijke stellingen , die kan worden gebruikt om de functieaanroep te beperken.

Oplossing 1: gebruik if Condition om de maximale call-stackgrootte op te lossen fout

Om de fout op te lossen, wordt de if-voorwaarde toegepast om de stapelgrootte in JavaScript te beperken. De code wordt bijvoorbeeld hieronder gegeven.

Code

was i = 1 ;
fun_user ( i ) ;
functie fun_user ( i ) {
als ( i < = 10 )
{
console.log ( 'Welkom bij JavaScript' ) ;
i =i+ 1 ;
fun_user ( i ) ;
} }

De beschrijving van de code is als volgt:

  • Ten eerste een variabele 'i' wordt geïnitialiseerd met de waarde 1.
  • Daarna, fun_user() methode wordt gebruikt door de variabele door te geven 'i'.
  • Als in deze functie een voorwaarde wordt toegepast die de iteratie beperkt tot: 10 .
  • Eindelijk het bericht 'Welkom bij JavaScript' wordt weergegeven met de 'console.log()' methode.

Uitgang:

Oplossing 2: For Loop gebruiken om de maximale call-stackgrootte op te lossen Fout

Om de fout op te lossen, wordt een for-lus gebruikt om de iteraties in JavaScript te beperken. De code wordt bijvoorbeeld hieronder gegeven.

Code

laten uitgang = 0 ;
voor ( laten ik = 5 ; i > 0 ; i-- )
{
uitvoer += toevoegen ( 1 , 1 ) ;
}
functie toevoegen ( een, b ) {
opbrengst een + b;
}
console.log ( uitvoer ) ;

In deze code:

  • de variabele 'uitvoer' wordt geïnitialiseerd met een waarde van 0.
  • Daarna wordt een for-lus gebruikt om vijf iteraties uit te voeren. In deze lus wordt de toevoegen() methode wordt aangeroepen door de waarde 1 door te geven.
  • De methode toevoegen() geeft de toevoeging van twee variabelen terug a en b .
  • Op het einde, de log() methode wordt gebruikt om de uitvoer in het consolevenster weer te geven.

Uitgang:

De uitvoer keert terug “10” door de fout van de maximale call-stackgrootte in JavaScript op te lossen.

Conclusie

De oneindige aanroep van recursieve functies vindt plaats als de 'maximale call-stackgrootte overschreden fout' in javascript. In dit artikel worden de redenen uitgelegd voor het veroorzaken van dit type fout. Daarna twee oplossingen, waaronder: 'for loop' en 'Voorwaardelijke stellingen' worden gebruikt om de fout op te lossen. Daarom worden de aanroepfuncties beperkt door deze oplossingen te gebruiken.