Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.
Call stack (Pilha de chamadas)
A pilha de chamadas(call stack) é um mecanismo do interpretador de uma linguagem que organiza o funcionamento do script quando são chamadas muitas funções, qual função está sendo executada no momento, e quais serão chamadas dentro de alguma função, etc.
- Quando o script chama a função, ela é adicionada à pilha de chamadas, e então é iniciado o carregamento da função.
- Qualquer função chamada por essa função será adicionada à pilha de chamadas uma acima da outra.
- Quando a função termina a execução, o interpretador retira a função da pilha e continua a execução do programa de onde parou.
- Caso a pilha ocupar mais espaço do que foi separado a ela, será exibido um erro "stack overflow" (estouro de pilha).
In this article
Exemplo
function saudacao() { // [1] Algum código aqui digaOi(); // [2] Algum código aqui}function digaOi() { return "Olá!";}// Chamando a função `saudacao`saudacao();// [3] Algum código aquiO código acima será executado desta forma pelo interpretador:
Todas as funções serão ignoradas, até chegar na chamada da função
saudacao().Adiciona a função
saudacao()para a pilha de chamadas.Nota:Pilha de chamadas:- saudacao
Executa todas as linhas de código da função
saudacao().Chama a função
digaOi().Adiciona a função
digaOi()na pilha de chamadas.Nota:Pilha de chamadas:-
saudacao> - digaOiExecuta todas as linhas de código da função
digaOi()até o final.Retorna a execução na linha onde foi chamada a função
digaOi()e continua a execução do resto da funçãosaudacao().Deleta a função
digaOi()da pilha de chamadas.Nota:Pilha de chamadas:-
saudacaoQuando todas as linhas da função
saudacao()forem executadas, retorna para a linha onde a função foi invocada, e continua a execução do resto do código.Deleta a função
saudacao()da Pilha de chamadas.Nota:Pilha de chamadas:EMPTY
Começamos com uma pilha de chamadas vazia, e sempre que chamamos uma função, ela é automaticamente adicionada à pilha de chamadas, e depois de todas as linhas serem executadas, é automaticamente removida da pilha de chamadas. No final, a pilha está vazia novamente.
Veja mais
>General knowledge
- Call stack on Wikipedia
- MDN Web Docs Glossary