A chave para corrigir um erro "fora do espaço de pilha" , também de modo mais geral conhecido como um erro de estouro de pilha , é primeiro entender o que significa. Quando uma função é chamada em JavaScript, a função e suas variáveis são copiados para a memória em que é chamado de pilha. Se as chamadas de função que uma outra função ( ou a mesma função de novo ) , então a função de criança é também adicionada à pilha . Se esta forma de chamada recursiva de funções excede o limite para recursão que é definido pelo navegador, então JavaScript retornará um erro de estouro de pilha. Instruções
1
Check for uma função infinitamente looping . Esta é a causa mais simples e mais comum de um erro de estouro de pilha. Sempre que uma função chama a si mesma , utilize instruções condicionais para garantir que a função nunca pode -se malha em um erro de estouro . Use uma variável de contador ou uma variável de inicialização, ou verificar o valor de uma variável que é manipulada pela função para determinar se é ou não foi já executado.
2
Verifique se há duas ou mais funções que exigem cada a outra para formar um circuito infinito . Sempre que uma função chama outra , estar ciente de que, se a segunda função chama de volta o primeiro , pode ser possível que o código para fazer um loop dentro dessas funções. Isso pode até acontecer , com mais de duas funções , e isso pode ser muito mais difícil de detectar do que uma função looping . A solução é a mesma de qualquer forma : Use declarações condicionais para proteger o código contra looping infinitamente
3
Verifique se há altos níveis de recursão que são necessários para uma função a ser executada. . Às vezes, funções profundamente recursivas não são um descuido, mas fazem parte do projeto do código. Se este for o caso, então, ver se a função pode ser dividida em múltiplas funções que são executados em série , cada um com um menor nível de recursão.
4
Construa sua própria pilha. Faça isso através da criação de uma matriz que irá gerenciar as variáveis A função requer para executar e , em seguida, chamar a função dentro de um loop. Ao armazenar as variáveis e , em seguida, chamar a função sequencial de um loop, você pode imitar o comportamento de uma função recursiva , sem depender de comportamento pilha de JavaScript.