Rekurzivní funkce jsou funkce, které volají metodu v rámci jiné metody. Nekonečná rekurze však způsobí chybu velikosti zásobníku. K chybě velikosti zásobníku dochází v důsledku nevyřízených požadavků. Tento problém nastává při volání samotné funkce. Tento článek vysvětluje, že maximální velikost zásobníku volání překračuje chybu v JavaScriptu. Kromě toho je k dispozici také řešení pro vyřešení chyby.
Článek nám slouží následovně:
- Maximální velikost zásobníku hovorů překročena Chyba v JavaScriptu
- Chyba při použití podmínky if k vyřešení překročení maximální velikosti zásobníku volání
- Použití smyčky for k vyřešení chyby překročení maximální velikosti zásobníku volání.
Maximální velikost zásobníku hovorů překročena Chyba v JavaScriptu
Když uživatel zavolá rekurzivní funkci, dojde k chybě překročení velikosti zásobníku. K tomuto typu chyby dochází v důsledku opakovaného vyvolávání metody. The fun_user() se používá jako rekurzivní volání uvnitř funkce fun_user() v JavaScriptu vygenerovat chybu v okně konzoly.
Kód
konzole.log ( 'Překročena maximální velikost zásobníku hovorů' ) ;
fun_user ( ) ;
funkce fun_user ( )
{
fun_user ( ) ;
}
V tomto kódu je Chyba „překročení maximální velikosti zásobníku volání“ se generuje voláním metody 'fun_user()' uvnitř funkce.
Kód zobrazí chybu jako 'RangeError: Překročena maximální velikost zásobníku volání.'
Existuje mnoho způsobů, jak tuto chybu vyřešit, jako např pro smyčku a podmíněné příkazy , který lze použít k omezení volání funkce.
Řešení 1: Použití podmínky if k vyřešení chyby překročení maximální velikosti zásobníku volání
K vyřešení chyby se použije podmínka if k omezení velikosti zásobníku v JavaScriptu. Kód je například uveden níže.
Kód
byl i = 1 ;fun_user ( i ) ;
funkce fun_user ( i ) {
-li ( i < = 10 )
{
konzole.log ( 'Vítejte v JavaScriptu' ) ;
i =i+ 1 ;
fun_user ( i ) ;
} }
Popis kódu je následující:
- Za prvé, proměnná 'já' je inicializována hodnotou 1.
- Potom, fun_user() metoda se používá předáním proměnné „já“.
- V této funkci, pokud je aplikována podmínka, která omezuje iteraci na 10 .
- Konečně zpráva “Vítejte v JavaScriptu” se zobrazí pomocí 'console.log()' metoda.
Výstup
Řešení 2: Chyba překročení maximální velikosti zásobníku volání pomocí funkce pro smyčku
K vyřešení chyby se používá smyčka for k omezení iterací v JavaScriptu. Kód je například uveden níže.
Kód
nechat výstup = 0 ;pro ( nechat i = 5 ; i > 0 ; já-- )
{
výstup += přidat ( 1 , 1 ) ;
}
funkce přidat ( a, b ) {
vrátit se a + b;
}
konzole.log ( výstup ) ;
V tomto kódu:
- Proměnná 'výstup' je inicializována hodnotou 0.
- Poté se použije cyklus for k provedení pěti iterací. V této smyčce je přidat() metoda se volá předáním hodnoty 1.
- Metoda přidat() vrátí sčítání dvou proměnných A a b .
- Nakonec log() metoda se používá k zobrazení výstupu v okně konzoly.
Výstup
Výstup se vrací '10' vyřešením chyby maximální velikosti zásobníku volání v JavaScriptu.
Závěr
Nekonečné volání rekurzivních funkcí probíhá jako Chyba „překročení maximální velikosti zásobníku volání“ v JavaScriptu. Tento článek vysvětluje důvody způsobující tento typ chyby. Poté, dvě řešení, včetně 'pro smyčku' a 'podmíněné příkazy' se používají k vyřešení chyby. Použitím těchto řešení jsou tedy funkce volání omezeny.