Rekurzívne funkcie sú funkcie, ktoré volajú metódu v rámci inej metódy. Nekonečná rekurzia však spôsobuje chybu veľkosti zásobníka. Chyba veľkosti zásobníka sa vyskytuje v dôsledku nevybavených požiadaviek. Tento problém vzniká pri volaní samotnej funkcie. Tento článok vysvetľuje, že maximálna veľkosť zásobníka hovorov presahuje chybu v JavaScripte. Okrem toho je k dispozícii aj riešenie na vyriešenie chyby.
Článok nám slúži nasledovne:
- Prekročená maximálna veľkosť zásobníka hovorov Chyba v JavaScripte
- Chyba pri použití podmienky if na vyriešenie prekročenia maximálnej veľkosti zásobníka hovorov
- Použitie cyklu for na vyriešenie chyby prekročenia maximálnej veľkosti zásobníka hovorov.
Prekročená maximálna veľkosť zásobníka hovorov Chyba v JavaScripte
Chyba prekročenia veľkosti zásobníka nastane, keď používateľ zavolá rekurzívnu funkciu. Tento typ chyby sa vyskytuje v dôsledku opakovaného vyvolávania metódy. The fun_user() sa používa ako rekurzívne volanie vnútri funkcie fun_user() v JavaScripte, aby sa vygenerovala chyba v okne konzoly.
kód
konzola.log ( 'Prekročila sa maximálna veľkosť zásobníka hovorov' ) ;
fun_user ( ) ;
funkciu fun_user ( )
{
fun_user ( ) ;
}
V tomto kóde je Chyba „prekročila sa maximálna veľkosť zásobníka hovorov“ sa generuje volaním metódy 'fun_user()' vnútri funkcie.
Kód zobrazí chybu ako 'RangeError: Maximálna veľkosť zásobníka hovorov bola prekročená.'
Existuje mnoho spôsobov, ako túto chybu vyriešiť, ako napr pre slučku a podmienené príkazy , ktorý možno použiť na obmedzenie volania funkcie.
Riešenie 1: Použitie podmienky if na vyriešenie chyby prekročenia maximálnej veľkosti zásobníka hovorov
Na vyriešenie chyby sa na obmedzenie veľkosti zásobníka v JavaScripte použije podmienka if. Napríklad kód je uvedený nižšie.
kód
bol i = 1 ;fun_user ( i ) ;
funkciu fun_user ( i ) {
ak ( i < = 10 )
{
konzola.log ( „Vitajte v JavaScripte“ ) ;
i =i+ 1 ;
fun_user ( i ) ;
} }
Popis kódu je nasledovný:
- Po prvé, premenná 'ja' inicializuje sa hodnotou 1.
- Potom, fun_user() metóda sa používa odovzdaním premennej „ja“.
- V tejto funkcii, ak je aplikovaná podmienka, ktorá obmedzuje iteráciu na 10 .
- Nakoniec správa “Vitajte v JavaScripte” sa zobrazí pomocou 'console.log()' metóda.
Výkon
Riešenie 2: Chyba prekročenia maximálnej veľkosti zásobníka hovorov pomocou funkcie pre slučku
Na vyriešenie chyby sa používa cyklus for na obmedzenie iterácií v JavaScripte. Napríklad kód je uvedený nižšie.
kód
nech výstup = 0 ;pre ( nech i = 5 ; i > 0 ; ja-- )
{
výstup += pridať ( 1 , 1 ) ;
}
funkciu pridať ( a, b ) {
vrátiť a + b;
}
konzola.log ( výkon ) ;
V tomto kóde:
- Premenná 'výkon' sa inicializuje s hodnotou 0.
- Potom sa použije cyklus for na vykonanie piatich iterácií. V tejto slučke, pridať () metóda sa volá odovzdaním hodnoty 1.
- Metóda pridať () vráti sčítanie dvoch premenných a a b .
- Nakoniec, log() metóda sa používa na zobrazenie výstupu v okne konzoly.
Výkon
Výstup sa vráti '10' vyriešením chyby maximálnej veľkosti zásobníka hovorov v JavaScripte.
Záver
Nekonečné volanie rekurzívnych funkcií sa vyskytuje ako Chyba „prekročila sa maximálna veľkosť zásobníka hovorov“ v JavaScripte. Tento článok vysvetľuje dôvody, ktoré spôsobujú tento typ chyby. Potom dve riešenia, vrátane 'pre slučku' a 'podmienečné vyhlásenia' sa používajú na odstránenie chyby. Preto sú funkcie volania pri použití týchto riešení obmedzené.