Slik reparerer en "Out of Stack Space" Feil i Javascript

Slik reparerer en "Out of Stack Space" Feil i Javascript


Nøkkelen til å fikse en "Out of Stack Space" feil, også mer generelt kjent som en stakkoverflyt feil, er å først forstå hva det betyr. Når en funksjon kalles i Javascript, er funksjonen og variablene kopiert til minnet i det som kalles stabelen. Hvis det funksjonskall en annen funksjon (eller den samme funksjon på nytt), så barnet funksjonen blir også lagt til i stabelen. Hvis denne formen for rekursive kall funksjoner overskrider grensen for rekursjon som er definert av nettleseren, da Javascript vil returnere en stack overflow feil.

Bruksanvisning

1 Se etter en uendelig looping funksjon. Dette er den enkleste og mest vanlige årsaken til en stabel overflytfeil. Når en funksjon kaller seg, bruke betinget utsagn for å sikre at funksjonen kan aldri sløyfe seg til en overflytsfeil. Bruk en tellervariabelen eller en initialisering variabel, eller sjekke verdien av en variabel som er manipulert av funksjonen for å avgjøre hvorvidt det har vært allerede henrettet.

2 Sjekk for to eller flere funksjoner som kaller hverandre for å danne en uendelig løkke. Når en funksjon kaller hverandre, være oppmerksom på at dersom andre funksjonskall tilbake det første, kan det være mulig for koden å sløyfe innenfor disse funksjonene. Dette kan også skje med mer enn to funksjoner, og det kan være mye vanskeligere å få øye på enn en looping funksjon. Løsningen er den samme enten måten: Bruk betinget utsagn for å ivareta koden mot looping uendelig.

3 Sjekk for høye nivåer av rekursjon som er nødvendige for en funksjon som skal utføres. Noen ganger dypt rekursive funksjoner er ikke en forglemmelse, men er en del av koden design. Hvis dette er tilfelle, så se om funksjonen kan deles inn i flere funksjoner som kjører i serie, hver med et lavere nivå av rekursjon.

4 Bygg din egen stack. Gjør dette ved å lage en matrise som vil administrere variablene funksjonen krever for å utføre og deretter ringe funksjon i en loop. Ved å lagre disse variablene og deretter kalle funksjonen sekvensielt fra en loop, kan du etterligne atferden til en rekursiv funksjon uten å være avhengig av Javascript stack oppførsel.