Rekursīvās funkcijas ir funkcijas, kas izsauc metodi citā metodē. Tomēr bezgalīga rekursija izraisa steka izmēra kļūdu. Steka lieluma kļūda rodas daudzu neapstiprinātu pieprasījumu dēļ. Šī problēma rodas, izsaucot pašu funkciju. Apsverot to, šajā rakstā ir paskaidrots, ka maksimālais zvanu steka lielums pārsniedz JavaScript kļūdu. Turklāt tiek piedāvāts arī risinājums, lai novērstu kļūdu.
Raksts mums kalpo šādi:
- Maksimālais zvanu steka lielums pārsniedz kļūdu JavaScript
- Ja nosacījuma izmantošana, lai atrisinātu kļūdu, kas pārsniedz maksimālo zvanu steka lielumu
- Cikla izmantošana, lai atrisinātu kļūdu, kas pārsniedz maksimālo zvanu steka lielumu.
Maksimālais zvanu steka lielums pārsniedz kļūdu JavaScript
Pārsniegtā steka lieluma kļūda rodas, kad lietotājs izsauc rekursīvo funkciju. Šāda veida kļūda rodas, atkārtoti izsaucot metodi. The fun_user() tiek izmantots kā rekursīvs izsaukums funkcijā fun_user() JavaScript, lai ģenerētu kļūdu konsoles logā.
Kods
console.log ( 'Pārsniegts maksimālais zvanu steka lielums' ) ;
fun_user ( ) ;
funkciju fun_user ( )
{
fun_user ( ) ;
}
Šajā kodā Kļūda “pārsniegts maksimālais zvanu steka lielums” tiek ģenerēts, izsaucot metodi “fun_user()” funkcijas iekšpusē.
Kods parāda kļūdu kā 'RangeError: pārsniegts maksimālais zvanu steka lielums.'
Ir daudzi veidi, kā novērst šo kļūdu, piemēram, cilpai un nosacījuma paziņojumi , ko var izmantot, lai ierobežotu funkcijas izsaukumu.
1. risinājums: izmantojiet if Condition, lai atrisinātu kļūdu, kas pārsniedz maksimālo zvanu steka lielumu
Lai novērstu kļūdu, tiek piemērots nosacījums if, lai ierobežotu steka lielumu JavaScript. Piemēram, kods ir norādīts zemāk.
Kods
bija i = 1 ;fun_user ( i ) ;
funkciju fun_user ( i ) {
ja ( i < = 10 )
{
console.log ( 'Laipni lūdzam JavaScript' ) ;
i =i+ 1 ;
fun_user ( i ) ;
} }
Koda apraksts ir šāds:
- Pirmkārt, mainīgais 'es' tiek inicializēts ar vērtību 1.
- Pēc tam, fun_user() metode tiek izmantota, nododot mainīgo 'i'.
- Šajā funkcijā, ja tiek piemērots nosacījums, kas ierobežo iterāciju līdz 10 .
- Visbeidzot, ziņa “Laipni lūdzam JavaScript” tiek parādīts, izmantojot “console.log()” metodi.
Izvade
2. risinājums: izmantojiet for Loop, lai novērstu kļūdu, kas pārsniedz maksimālo zvanu steka lielumu
Lai novērstu kļūdu, tiek izmantota for cilpa, lai ierobežotu JavaScript iterācijas. Piemēram, kods ir norādīts zemāk.
Kods
ļaut izvade = 0 ;priekš ( ļaut i = 5 ; i > 0 ; es-- )
{
izeja += pievieno ( 1 , 1 ) ;
}
funkciju pievienot ( a, b ) {
atgriezties a + b;
}
console.log ( izvade ) ;
Šajā kodā:
- Mainīgais 'izeja' tiek inicializēts ar vērtību 0.
- Pēc tam tiek izmantota for cilpa, lai veiktu piecas iterācijas. Šajā cilpā pievienot () metode tiek izsaukta, nododot vērtību 1.
- Metode pievienot () atgriež divu mainīgo pievienošanu a un b .
- Galu galā, žurnāls() metode tiek izmantota, lai parādītu izvadi konsoles logā.
Izvade
Izvade atgriežas “10” atrisinot JavaScript maksimālā zvanu steka lieluma kļūdu.
Secinājums
Rekursīvo funkciju bezgalīga izsaukšana notiek kā Kļūda “pārsniegts maksimālais zvanu steka lielums” JavaScript. Šajā rakstā ir izskaidroti šāda veida kļūdu cēloņi. Pēc tam divi risinājumi, tostarp 'cilpai' un 'nosacījuma paziņojumi' tiek izmantoti, lai novērstu kļūdu. Tādējādi, izmantojot šos risinājumus, zvanīšanas funkcijas tiek ierobežotas.