Come riparare un errore "spazio di stack" in JavaScript

March 13

Come riparare un errore "spazio di stack" in JavaScript


La chiave per la fissazione di un errore "di spazio di stack", anche più generalmente conosciuto come un errore di overflow dello stack, è prima capire che cosa significa. Quando una funzione viene chiamata in JavaScript, la funzione e le sue variabili vengono copiati nella memoria in quella che viene chiamata la pila. Se tale funzione chiama un'altra funzione (o la stessa funzione di nuovo), allora la funzione bambino è anche aggiunto alla pila. Se questa forma di chiamata ricorsiva delle funzioni supera il limite di ricorsione che è definito dal browser, allora JavaScript restituirà un errore di overflow dello stack.

istruzione

1 Verificare la presenza di una funzione infinitamente loop. Questa è la causa più semplice e più comune di un errore di overflow dello stack. Ogni volta che una funzione si chiama, utilizzare istruzioni condizionali per assicurare che la funzione può mai loop stesso in un errore di overflow. Utilizzare una variabile contatore o una variabile di inizializzazione, o controllare il valore di una variabile che è manipolato dalla funzione per determinare se sia o non è stato già eseguito.

2 Controllare due o più funzioni che chiamano tra loro per formare un ciclo infinito. Quando una funzione chiama un'altra, tenere presente che se la seconda funzione richiama la prima, può essere possibile che il codice ciclo all'interno di tali funzioni. Questo può accadere anche con più di due funzioni, e può essere molto più difficile da individuare di una funzione loop. La soluzione è allo stesso modo sia: utilizzare le istruzioni condizionali per salvaguardare il codice contro loop all'infinito.

3 Verificare la presenza di alti livelli di ricorsione che sono necessari per una funzione da eseguire. A volte le funzioni ricorsive profondamente non sono una svista, ma sono parte del design del codice. Se questo è il caso, poi vedere se la funzione può essere suddiviso in più funzioni che funzionano in serie, ciascuno con un livello inferiore di ricorsione.

4 Costruire il proprio stack. A tale scopo, la creazione di una matrice che gestirà le variabili della funzione richiede di eseguire e quindi chiamare la funzione all'interno di un ciclo. Memorizzando queste variabili e quindi chiamare la funzione in sequenza da un ciclo, si può imitare il comportamento di una funzione ricorsiva senza fare affidamento sul comportamento dello stack di JavaScript.