Escopo de Variáveis Javascript

Javascript
Tempo de leitura: 4 minutos

Escopo de Variáveis Javascript: O Escopo (Scope) em JavaScript é o conjunto de regras que define a visibilidade e acessibilidade de variáveis, funções e objetos em diferentes partes do seu código. Entender o escopo é fundamental para prevenir conflitos de nomes, proteger dados e escrever código modular e previsível.

O escopo é determinado no momento da definição do código (Escopo Léxico).

1. Tipos de Escopo por Declaração

A visibilidade de uma variável é estritamente ligada à palavra-chave usada para declará-la (var, let, ou const).

A. Escopo Global

Variáveis declaradas fora de qualquer função ou bloco. Elas podem ser acessadas em qualquer lugar da aplicação.

JavaScript

let nomeApp = "MeuApp"; // Variável global

function mostrarNome() {
  console.log(nomeApp); // Acessível em qualquer lugar
}

Alerta: Evite o uso excessivo de variáveis globais, pois elas poluem o ambiente e aumentam a chance de conflitos entre diferentes partes do código.

B. Escopo de Função (Function Scope)

Aplicável a variáveis declaradas com var. A variável é visível em toda a função em que foi declarada, independentemente de onde dentro da função ela foi colocada.

JavaScript

function calcular() {
  var resultado = 10;
  if (true) {
    var resultado = 20; // Reutiliza a mesma variável 'resultado'
  }
  console.log(resultado); // Saída: 20
}

C. Escopo de Bloco (Block Scope – ES6+)

Aplicável a variáveis declaradas com let e const. A variável só é visível e acessível dentro do bloco de código ({}) onde foi definida (ex: dentro de um if, for ou while).

JavaScript

function calcular() {
  let resultado = 10;
  if (true) {
    let resultado = 20; // Cria uma NOVA variável 'resultado' no escopo do bloco
    console.log(resultado); // Saída: 20
  }
  console.log(resultado); // Saída: 10 (Acessa a variável do escopo da função)
}

A Regra de Ouro: Use let e const e evite var. O escopo de bloco previne confusão e sobreescrita acidental de variáveis.

2. Hoisting e a Zona Morta Temporal

Hoisting é o mecanismo do JavaScript que move as declarações (mas não as inicializações) para o topo do seu escopo antes da execução do código.

Palavra-ChaveHoisting da DeclaraçãoComportamento na Inicialização
varSim.Inicializada como undefined.
let/constSim.Não inicializada.

JavaScript

// Com 'var': A declaração é içada, mas o valor é undefined
console.log(a); // Saída: undefined
var a = 5;

// Com 'let': A variável entra na Zona Morta Temporal
console.log(b); // ReferenceError: Cannot access 'b' before initialization
let b = 10;

A Zona Morta Temporal (TDZ) é o período de tempo desde o início do escopo de um let/const até o momento de sua declaração, durante o qual ela não pode ser acessada.

3. Escopo Léxico e a Cadeia de Escopo

O JavaScript usa Escopo Léxico (ou Estático), o que significa que o escopo é determinado pela localização física de onde as variáveis e as funções são escritas no código, e não por onde elas são chamadas.

Quando o JavaScript procura uma variável, ele segue a Cadeia de Escopo:

  1. Procura no escopo local (o mais interno).
  2. Se não encontrar, sobe para o escopo externo (o que o envolve).
  3. Continua subindo até atingir o Escopo Global.

JavaScript

function externa(msgExterna) {
  const x = "Externa";
  function interna(msgInterna) {
    // Busca 'x' no escopo externo (externa)
    console.log(`${x} chamou ${msgInterna}`); 
  }
  interna("Função interna");
}
externa();

✅ Conclusão Escopo de Variáveis Javascript

Escopo de Variáveis Javascript: O escopo é o sistema de regras que dita a visibilidade das suas variáveis. Ao utilizar let e const, você garante o Escopo de Bloco moderno, evitando surpresas do var e do hoisting.

Toda jornada tem um início, e o início para se tornar um desenvolvedor web é dominar as seguintes tecnologias, que você encontra aqui mesmo:

HTML
HTML
CSS
CSS
Javascript
JavaScript

E se você gosta do nosso conteúdo, não deixe de contribuir adquirindo os serviços e produtos dos nossos apoiadores e empresas que somos associados:

Hospedagem Hostinger
Ofertas Amazon
Amazon Prime
Author: Thiago Rossi
Com mais de 20 anos de jornada na tecnologia, minha trajetória evoluiu do ensino técnico à arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de soluções de Inteligência Artificial nativa e análise de dados públicos, utilizando o ecossistema PHP para transformar dados brutos em transparência e eficiência. Como autor e desenvolvedor, acredito na democratização do conhecimento. Essa visão resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura até os bastidores da indústria de Jogos e IA. No universo de Game Design, sou autor do livro "GDD – O Guia Definitivo" e documento ativamente meus processos através de DevLogs, unindo rigor técnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso é conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.