DEV Community

Cover image for JavaScript: O que é callstack?
Cristian Magalhães
Cristian Magalhães

Posted on • Edited on

3

JavaScript: O que é callstack?

Para podermos evoluir e irmos além do básico é importante conhecer como as linguagens de programação funcionam, o que aqui no caso é o JavaScript. Então para isso eu pretendo fazer alguns posts falando de uma forma mais profunda sobre os mecanismos dessa linguagem de programação. Hoje eu gostaria de começar falando sobre a "callstack".

Antes de começar é importante deixar claro que a callstack não, é algo que existe apenas no JavaScript, é um mecanismo usado por outras linguagens também.

Outra coisa importante é que você conheça o conceito de pilha que é ensinado na matéria de estrutura de dados. Caso não conheça ainda recomendo ler este artigo onde eu explico de forma simples o conceito de pílha na programação.

Qual é a sua função?

O objetivo da callstack é manter o controle do ponteiro e dizer para a função atual, para qual função deve ser retornado o controle após o fim da sua execução. Ou seja, ela serve para dizer o que o computador deve executar após o fim da função atual. Simples, né? Agora vamos para algo mais prático.

Exemplo

Image description

Vamos considerar esse código acima para exemplo. Nele eu simulo uma chamada a um serviço que chama um repository para simular um banco de dados.

Quando começamos a execução do nosso programa a nossa função main é adicionada a callstack. Logo a nossa callstack ficará assim:

Image description

Em seguida nós chamamos a função getServiceUsuarios que é o serviço que chama o repository e a função de formatação das informações do usuário. Então teremos o seguinte cenário:

Image description

Agora nós vamos chamar a função repositoryUsuarios e logo em seguida a função de formatação. Porém, as duas nunca estarão juntas na callstack, pois uma é chama após a execução da outra. Então quando eu chamo a função do repository eu tenho a seguinte situação:

Image description

Então ela sairá da stack e dará espaço a função formatarUsuarios que por fim vai retornar os usuários formatados e sair da callstack também. E aqui as funções começam uma a uma, sair da callstack retornando os seus resultados. Até que chegam na função main que mostra o resultado na tela e finaliza o programa. Assim a stack ficará vazia novamente.

Outro momento em que a callstack está presente no dia a dia é na mensagem de erro. Forcei a minha função repositoryUsuarios a jogar um erro e olha só, ali está a callstack do node com as funções que foram chamadas até chegar na função em que ocorreu o erro. E também podermos ver até mesmo os módulos internos do node que foram chamados, para a execução do nosso programa.

Image description

Muito obrigado por ler 🙃

Links úteis

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

While many AI coding tools operate as simple command-response systems, Qodo Gen 1.0 represents the next generation: autonomous, multi-step problem-solving agents that work alongside you.

Read full post

Top comments (0)

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

AWS GenAI LIVE!

GenAI LIVE! is a dynamic live-streamed show exploring how AWS and our partners are helping organizations unlock real value with generative AI.

Tune in to the full event

DEV is partnering to bring live events to the community. Join us or dismiss this billboard if you're not interested. ❤️