Na aula anterior, entendemos que o JavaScript executa código em fases e que tudo acontece de forma organizada.

Agora vamos responder a uma pergunta essencial:

onde e como o JavaScript controla tudo o que está sendo executado?

Para isso, vamos conhecer dois conceitos fundamentais:

  • Execution Context (Contexto de Execução)
  • Call Stack (Pilha de chamadas)

🎯 Objetivo da aula

Ao final desta aula, você será capaz de:

  • Entender o que é um Execution Context
  • Compreender como o Call Stack funciona
  • Visualizar a execução de funções passo a passo
  • Entender por que erros de stack acontecem
  • Preparar o terreno para Event Loop e assincronicidade

O que é um Execution Context?

Sempre que o JavaScript executa código, ele cria um Contexto de Execução.

Um Execution Context é um ambiente onde o código é:

  • Analisado
  • Preparado
  • Executado

Podemos pensar nele como uma “caixa” onde o JavaScript guarda tudo o que precisa para executar aquele trecho de código.

Tipos de Execution Context

Existem três tipos principais:

  • Global Execution Context
  • Function Execution Context
  • Eval Execution Context (raro)

Neste curso, vamos focar nos dois primeiros.

Global Execution Context

Quando um arquivo JavaScript começa a ser executado, o JavaScript cria automaticamente o:

Global Execution Context.

É nele que:

  • Variáveis globais são registradas
  • Funções globais são registradas
  • O código começa a rodar
Sempre existe exatamente um Global Execution Context.

Function Execution Context

Toda vez que uma função é chamada, o JavaScript cria um novo:

Function Execution Context.

Esse contexto existe apenas enquanto a função está sendo executada.

Exemplo simples

 
  function primeira() 
  { 
    console.log("Dentro da primeira"); 
  }
  function segunda() 
  {
    console.log("Antes da primeira");
    primeira();
    console.log("Depois da primeira");
  }
  segunda();
 
  segunda(); // Saída será: 
  // Antes da primeira // Dentro da primeira // Depois da primeira 

Agora entra o Call Stack

O Call Stack é uma estrutura de dados que o JavaScript usa para:

  • Controlar quais funções estão sendo executadas
  • Definir quem entra e quem sai da execução

Ele funciona como uma pilha:

  • O último a entrar é o primeiro a sair

Passo a passo do Call Stack

Vamos acompanhar o código anterior:

  • O contexto global entra na pilha
  • segunda() é chamada → entra na pilha
  • primeira() é chamada → entra na pilha
  • primeira() termina → sai da pilha
  • segunda() continua
  • segunda() termina → sai da pilha
O Call Stack nunca executa duas coisas ao mesmo tempo.

Visualização mental

Imagine o Call Stack assim:

 | primeira() | | segunda() | | global | 

Sempre o topo da pilha é o que está sendo executado.

Erros de Call Stack

Quando uma função chama a si mesma sem controle, o Call Stack cresce indefinidamente.

 function loop() { loop(); }

loop();
 loop(); // Erro: Maximum call stack size exceeded 
Esse erro acontece porque a pilha fica cheia.

Por que isso é tão importante?

Porque o Call Stack explica:

  • Por que o JavaScript é síncrono
  • Por que funções bloqueiam a execução
  • Por que precisamos de assincronicidade

E isso nos leva diretamente ao próximo conceito.

Resumo da aula para nunca mais esquecer

  • Execution Context é o ambiente de execução
  • Todo código começa no contexto global
  • Cada função cria um novo contexto
  • O Call Stack controla a ordem das execuções
  • O topo da pilha é sempre o que está rodando

Na próxima aula, vamos entender como o JavaScript consegue lidar com tarefas assíncronas através do Event Loop.


HARDWARE

Entendendo o seu computador

O que há dentro do meu computador?

Existem alguns componentes fundamentais presentes dentro do seu computador e é muito importante que você conheça um pouco sobre eles, seja para argumentar com algum vendedor durante a compra de um novo PC ou para identificar alguma atitude desleal de algum técnico que esteja te passando um orçamento para reparo. Na seção Raio-X aqui do Contém Bits você pode conhecer e entender mais detalhadamente sobre cada componente, ou também pode clicar abaixo no componente que deseja, para conhecê-lo melhor.

  • Gabinetes

  • Placas-Mãe

  • Processadores

  • Memória

  • Fontes

  • Drives Ópticos

  • Discos Rígidos

  • SSD

  • Placas de Som

  • Placas de Vídeo

Você Sabia?

A primeira versão do clássico Mega Man, para Nintendo 8 bits, tem seu recorde de pontos estabelecido em 03/11/2006, por David Archey, que cravou 2.396.700 pontos, terminando o jogo.


Nos primeiros oito dias após o lançamento do console Nintendo Wii foram vendidas 600 mil unidades. Isso equivale a quase um por segundo e estes incríveis números são referentes às vendas apenas nos EUA!


As primeiras máquinas de fliperama do mundo a utilizarem moedas, chamadas de Galaxy Game, custavam mais de 20 mil dólares para serem produzidas. Saiba mais sobre elas aqui.


O jogo Final Fantasy X para o Sony Playstation 2 vendeu, apenas no dia do seu lançamento, 1.455.732 cópias, estabelecendo um recorde de vendagem para as primeiras 24 horas de um game. Méritos da SquareSoft, que desenvolveu um excelente produto!


Instalar vários aplicativos com o mesmo propósito, como editores de texto, reprodutores de músicas ou vídeos e até programas antívirus sobrecarregam o seu sistema operacional e ainda ocupam espaço desnecessário em seu HD. Tenha apenas um bom programa para cada função.