Variáveis: let, const, var e escopo
Declare variáveis com let, const e var. Entenda o escopo de bloco, o escopo de função e por que const é preferível para a maioria dos valores.
Variáveis: let, const, var e escopo é uma aula grátis de Frontend Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Frontend Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Frontend Academy inclui 4 aulas no total.
Por que usar variáveis?
As variáveis armazenam valores para que você possa reutilizá-los, atualizá-los e dar-lhes nomes significativos. JavaScript oferece três formas de declarar variáveis: var (antiga), let (moderna, que pode ser reatribuída) e const (moderna, com vinculação constante).
const — a escolha padrão
Declare com const quando não for reatribuir a variável. Isso indica sua intenção e evita reatribuições acidentais. Observação: const impede a revinculação, mas não torna objetos ou matrizes imutáveis.
const name = 'Alice'; // can't reassign
const PI = 3.14159;
const user = { age: 25 }; // object is mutable
user.age = 26; // OK — property change, not rebinding
// user = {}; // Error — can't reassign constlet — quando você precisa reatribuir
Use let quando o valor for mudar: contadores de laços, somas acumuladas e variáveis de estado. let tem escopo de bloco — ele só existe dentro do { } delimitador mais próximo.
let score = 0;
score = score + 10; // OK
for (let i = 0; i < 3; i++) {
console.log(i); // 0, 1, 2
}
// console.log(i); // ReferenceError — i is out of scopevar — a declaração legada
var tem escopo de função (não escopo de bloco) e é elevada ao topo da função. Isso causa erros sutis. Evite var no JavaScript moderno; prefira const e let.
function example() {
if (true) {
var x = 5; // function-scoped, not block-scoped
}
console.log(x); // 5 — still accessible here!
}Escopo: onde as variáveis vivem
Escopo global: declarado fora de qualquer função ou bloco, acessível em todos os lugares. Escopo de função: declarado dentro de uma função, acessível apenas dentro dela. Escopo de bloco: let/const dentro de { }, acessível apenas dentro desse bloco.
Elevação
Elevação move as declarações para o topo do escopo durante a compilação. As declarações var são elevadas e inicializadas como undefined. let e const são elevadas, mas não inicializadas — acessá-las antes da declaração causa um erro de Zona Morta Temporal.
Nomeando variáveis
Use nomes descritivos. Use camelCase para variáveis e funções (userName), UPPER_SNAKE_CASE para constantes (MAX_RETRIES) e PascalCase para classes (UserProfile). Evite letras únicas, exceto em laços (i, j).
Declarando várias variáveis
Você pode declarar várias variáveis em uma única instrução, mas geralmente é mais claro usar uma declaração por variável. Evite a forma com vírgulas, pois ela pode ocultar o escopo e os tipos.
// Less clear:
let a = 1, b = 2, c = 3;
// Preferred:
const MAX = 10;
let count = 0;
const label = 'Score';A Zona Morta Temporal (TDZ)
Acessar uma variável let ou const antes de sua declaração no código gera um ReferenceError. Essa zona entre o início do bloco e a declaração é chamada de TDZ.
console.log(value); // ReferenceError: Cannot access 'value' before initialization
const value = 42;const com matrizes e objetos
const impede a reatribuição da variável, mas o valor referenciado ainda pode ser alterado. Use Object.freeze() para obter um objeto imutável superficial ou padrões imutáveis para obter imutabilidade profunda.
const items = [1, 2, 3];
items.push(4); // OK — mutates the array
items = []; // Error — can't reassign const
const config = Object.freeze({ maxAge: 30 });
config.maxAge = 99; // Silently fails in non-strict modePor que preferir const a let?
Usar const por padrão facilita a compreensão do código: você sabe que a variável não será reatribuída em outro lugar. Só passe para let quando realmente precisar reatribuir. Esse hábito reduz erros e melhora a legibilidade.
Verificação rápida
Qual é a principal diferença entre let e var?
Recapitulação: variáveis e escopo
Prefira const para valores que não serão reatribuídos. Use let para valores mutáveis. Evite var. O escopo de bloco (let/const) mantém as variáveis contidas. Na elevação: var é inicializada como undefined, enquanto let/const gera um erro de TDZ se for acessado cedo demais.
Perguntas Frequentes
A aula “Variáveis: let, const, var e escopo” é grátis?
Sim — o texto completo de “Variáveis: let, const, var e escopo” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Frontend Academy, atualize para CoddyKit PRO. O curso de Frontend Academy inclui 4 aulas no total.
O que vou aprender em “Variáveis: let, const, var e escopo”?
Declare variáveis com let, const e var. Entenda o escopo de bloco, o escopo de função e por que const é preferível para a maioria dos valores. Você pratica Frontend Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Frontend Academy?
Nenhuma experiência prévia é necessária. Frontend Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Variáveis: let, const, var e escopo”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Frontend Academy?
Sim. Cada aula de Frontend Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Variáveis: let, const, var e escopo
- Tipos de dados: string, number, boolean, null e undefined
- Funções: declarações, expressões e funções de seta
- Fluxo de controle: if, else, switch, for e while