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 experiência em tecnologia, atuo como Engenheiro de Computação, desenvolvedor de sistemas, escritor e produtor de conteúdo. Minha trajetória passa pelo ensino técnico, desenvolvimento web, arquitetura de sistemas e criação de soluções voltadas para a indústria de jogos digitais. Acredito que conhecimento deve ser acessível e aplicável. Essa visão resultou em uma biblioteca com mais de 550 artigos gratuitos, abrangendo temas como desenvolvimento web, infraestrutura, inteligência artificial, Game Design, mercado de jogos e carreiras na indústria de games. Sou autor do livro "GDD – O Guia Definitivo", uma obra dedicada ao planejamento e documentação de jogos digitais, e criador do GameMeTRix, uma plataforma que auxilia desenvolvedores na análise e validação de ideias para jogos. Meu trabalho busca conectar planejamento, tecnologia e mercado para ajudar criadores a transformar boas ideias em projetos viáveis. Atualmente concentro meus estudos e projetos no desenvolvimento de jogos web, na criação de metodologias para validação de produtos digitais e na produção de conteúdo técnico voltado ao ecossistema de jogos. Meu compromisso é unir teoria, prática e experiência de mercado para contribuir com o crescimento de novos desenvolvedores e profissionais da área.