edubun
Português

Variáveis: let e const

Uma variável é um nome para um valor. Depois de let score = 10, a palavra score vale 10 até você dar outra coisa a ela.

Dando nome a um valor para usá-lo de novo

Até agora, cada valor foi digitado direto no console.log e depois esquecido. Programas de verdade precisam lembrar das coisas: a pontuação do jogador, os itens de uma cesta, o nome que alguém digitou. Uma variável é uma caixa com nome que guarda um valor. Você a cria uma vez e depois usa o nome dela onde precisar do valor.

let score = 10;
console.log(score);        // mostra 10
console.log(score + 5);    // mostra 15

A linha let score = 10; faz duas coisas. A palavra-chave let declara uma variável nova chamada score, e = 10 põe o valor 10 dentro dela. O sinal de igual aqui não quer dizer "é igual a" como na matemática. Quer dizer "guarde o valor da direita no nome da esquerda." Os programadores chamam isso de atribuição. Quando score aparece mais tarde sem aspas, o JavaScript procura a caixa e usa o valor que está dentro.

Mudando um valor com let

Uma variável declarada com let pode receber um valor novo depois. Você escreve o nome, um sinal de igual e o novo valor, desta vez sem let, porque a variável já existe:

let score = 10;
score = 25;
console.log(score);        // mostra 25
score = score + 5;
console.log(score);        // mostra 30

A linha score = score + 5; parece impossível como matemática, mas leia como uma instrução e ela faz sentido. O JavaScript primeiro avalia o lado direito, a pontuação atual mais 5, que dá 30. Depois guarda 30 de volta em score. O valor antigo some. Esse padrão, ler uma variável e guardar nela um valor atualizado, é como os programas contam, somam totais e acompanham qualquer coisa que muda.

const para valores que não mudam

A palavra-chave const também declara uma variável, mas ela precisa receber um valor na hora e nunca pode receber outro. Tentar fazer isso para o programa com TypeError: Assignment to constant variable. Esse erro é útil. Se um valor não deve mudar, como o número de dias de uma semana ou uma alíquota de imposto, declará-lo com const garante que um erro em outra parte do programa não possa sobrescrevê-lo em silêncio.

const daysInWeek = 7;
console.log(daysInWeek * 4);   // mostra 28
// daysInWeek = 8;  pararia com um TypeError

Um bom hábito, recomendado por muitos guias de estilo, é usar const por padrão e trocar para let só quando você sabe que o valor vai mudar. Você também pode ver a palavra-chave antiga var em códigos pela web. Ela ainda funciona, mas segue regras mais frouxas que causam bugs surpreendentes, então este curso usa só let e const.

Regras para nomes

Um nome de variável pode ter letras, algarismos, o sublinhado _ e o cifrão $, mas não pode começar com algarismo nem ter espaços. Então total2 serve e 2total não. Os nomes diferenciam maiúsculas de minúsculas: score e Score são duas variáveis diferentes. Algumas palavras, como let, const, if e for, são reservadas pela linguagem e não podem ser usadas como nomes. Quando um nome é formado por várias palavras, os programadores de JavaScript costumam escrevê-lo em camelCase: a primeira palavra em minúsculas e cada palavra seguinte começando com maiúscula, como em totalPrice ou daysInWeek. Escolha nomes que digam o que o valor significa; price diz muito mais a quem lê do que x.

Declarada mas vazia, e usada cedo demais

Se você escrever let answer; sem valor, a variável existe, mas guarda undefined até você atribuir alguma coisa. Usar uma variável let ou const numa linha acima da sua declaração é erro: ReferenceError: Cannot access 'answer' before initialization. Usar um nome que nunca foi declarado dá ReferenceError: answer is not defined. As duas mensagens querem dizer a mesma coisa na prática: confira a grafia e confira se a declaração vem primeiro.

let nome = valor; pode mudar depois. const nome = valor; nunca muda.

variávelUm nome que guarda um valor
declararCriar uma variável com let ou const
atribuiçãoGuardar um valor com =
letDeclara uma variável cujo valor pode mudar
constDeclara uma variável que não pode receber outro valor
camelCasetotalPrice: as palavras seguintes começam com maiúscula
undefinedO que uma variável declarada guarda antes de receber um valor
palavra reservadaUma palavra como let ou if que não pode ser nome
  1. O que isto mostra?
    let x = 4;
    x = x + 3;
    console.log(x);
  2. O que isto mostra?
    let n = 2;
    n = 10;
    n = n * 3;
    console.log(n);
  3. O que isto mostra?
    let city = "Busan";
    console.log("city");
    • Busan
    • city
    • undefined
  4. O que acontece quando isto roda?
    const max = 5;
    max = 6;
    • max vira 6
    • Para com TypeError: Assignment to constant variable
    • Nada, max continua 5 em silêncio
  5. Qual é um nome de variável válido?
    • 2ndPlace
    • second place
    • secondPlace
  6. O que isto mostra?
    let total;
    console.log(typeof total);
  7. O que isto mostra?
    let a = 5;
    let b = a;
    a = 9;
    console.log(b);
  8. score e Score são a mesma variável?
    • Sim
    • Não
  9. Qual palavra-chave usar para o número de minutos de uma hora?
    • const
    • let
    • var
  10. O que isto mostra?
    let word = "hi";
    word = word + word;
    console.log(word);
Pontos-chave
  • let nome = valor; declara uma variável que pode mudar.
  • const nome = valor; declara uma variável que não pode receber outro valor.
  • = quer dizer guardar, não "é igual".
  • x = x + 1 lê x, soma 1 e guarda o resultado de volta.
  • Nomes: letras, algarismos, _ e $, sem algarismo no começo, diferenciam maiúsculas de minúsculas, camelCase.
Fontes deste curso (2)
  • MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
  • Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)

Data de verificação: 2026-10-17