Pilha de chamadas JavaScript

Resumo : neste tutorial, você aprenderá sobre o JavaScript Call Stack, que é um mecanismo para controlar as chamadas de função.

Introdução à pilha de chamadas JavaScript

Uma pilha de chamadas é uma forma de o mecanismo JavaScript controlar seu lugar no código que chama várias funções. Ele contém informações sobre qual função está sendo executada no momento e quais funções são invocadas dentro dessa função…

Além disso, o mecanismo JavaScript usa uma pilha de chamadas para gerenciar contextos de execução :

  • O contexto de execução global
  • Contextos de execução de função

A pilha de chamadas funciona com base no princípio LIFO (último a entrar, primeiro a sair).

Quando você executa um script, o mecanismo JavaScript cria um contexto de execução global e o coloca no topo da pilha de chamadas.

Sempre que uma função é chamada, o mecanismo JavaScript cria um contexto de execução de função para a função, coloca-o no topo da pilha de chamadas e começa a executar a função.

Se uma função chama outra função, o mecanismo JavaScript cria um novo contexto de execução de função para a função que está sendo chamada e a coloca no topo da pilha de chamadas.

Quando a função atual é concluída, o mecanismo JavaScript a retira da pilha de chamadas e retoma a execução de onde parou.

O script irá parar quando a pilha de chamadas estiver vazia.

Exemplo de pilha de chamadas JavaScript

Vamos começar com o seguinte exemplo:

function add(a, b) {
    return a + b;
}

function average(a, b) {
    return add(a, b) / 2;
}

let x = average(10, 20);
Linguagem de código:  JavaScript  ( javascript )

Quando o mecanismo JavaScript executa esse script, ele coloca o contexto de execução global (denotado por main()ou global()função na pilha de chamadas.

Pilha de chamadas JavaScript - principal

O contexto de execução global entra na fase de criação e passa para a fase de execução.

O mecanismo JavaScript executa a chamada para a average(10, 20)função e cria um contexto de execução de função para a average()função e a coloca no topo da pilha de chamadas:

Pilha de chamadas JavaScript - etapa 2

O mecanismo JavaScript começa a executar average()desde porque a average()função está no topo da pilha de chamadas.

A average()função chama add()a função. Neste ponto, o mecanismo JavaScript cria outro contexto de execução de função para a add()função e a coloca no topo da pilha de chamadas:

Pilha de chamadas JavaScript - etapa 3

O mecanismo JavaScript executa a add()função e a retira da pilha de chamadas:

Pilha de chamadas JavaScript - etapa 4

Neste ponto, a average()função está no topo da pilha de chamadas, o mecanismo JavaScript é executado e a retira da pilha de chamadas.

Pilha de chamadas JavaScript - etapa 5

Agora, a pilha de chamadas está vazia, então o script para de ser executado:

Pilha de chamadas JavaScript - pilha vazia

A imagem a seguir ilustra o status geral da Pilha de Chamadas em todas as etapas:

Pilha de chamadas JavaScript

Estouro de pilha

A pilha de chamadas tem um tamanho fixo, dependendo da implementação do ambiente host, seja o navegador da web ou o Node.js.

Se o número de contextos de execução exceder o tamanho da pilha, ocorrerá um erro de estouro de pilha.

Por exemplo, quando você executa uma função recursiva que não possui condição de saída, o mecanismo JavaScript emitirá um erro de estouro de pilha:

function fn() {
    fn();
}

fn(); // stack overflowLinguagem de código:  JavaScript  ( javascript )

JavaScript assíncrono

JavaScript é uma linguagem de programação de thread único. Isso significa que o mecanismo JavaScript possui apenas uma pilha de chamadas. Portanto, só pode fazer uma coisa de cada vez.

Ao executar um script, o mecanismo JavaScript executa o código de cima para baixo, linha por linha. Em outras palavras, é síncrono.

Assíncrono significa que o mecanismo JavaScript pode executar outras tarefas enquanto aguarda a conclusão de outra tarefa. Por exemplo, o mecanismo JavaScript pode:

  • Solicitação de dados de um servidor remoto.
  • Exibir um botão giratório
  • Quando os dados estiverem disponíveis, exiba-os na página da web.

Para fazer isso, o mecanismo JavaScript usa um loop de eventos , que será abordado no tutorial a seguir.

Resumo

  • O mecanismo JavaScript usa uma pilha de chamadas para gerenciar contextos de execução.
  • A pilha de chamadas usa a estrutura de dados da pilha que funciona com base no princípio LIFO (último a entrar, primeiro a sair).

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *