Instrução switch
if / else brilha quando a pergunta é sim/não ou um intervalo. Às vezes a pergunta é outra: qual de vários valores fixos é este? Código do dia 1…7, estado "ok" / "warn" / "err", chave de menu. Para essa forma, switch é a ferramenta limpa. Já sabe ramificar; aqui combina um valor com vários case etiquetados.
O que faz o switch?
switch olha para uma expressão entre parênteses. Compara esse valor com cada rótulo case. Quando coincide, executa as instruções desse caminho. break sai do switch para os seguintes não correrem. default é a reserva quando nenhum coincidiu.
As peças num relance
📊 Peças quotidianas do switch
| Palavra-chave | Leitura quotidiana | Uso típico |
|---|---|---|
switch |
olha para este valor… | abrir a escolha |
case |
se for igual a este rótulo… | uma opção fixa |
break |
para aqui; sai do switch | terminar após coincidir |
default |
se nada coincidiu… | caminho de reserva |
A coincidência é de igualdade estrita (ideia de ===). Um case numérico não coincide com uma cadeia de dígitos. Mantenha valor e rótulos na mesma forma.
let day = 3;
switch (day) {
case 1:
console.log("Mon");
break;
case 2:
console.log("Tue");
break;
case 3:
console.log("Wed");
break;
default:
console.log("other");
}
Um valor, vários caminhos etiquetados
Aqui day é 3, por isso corre o caminho case 3 e a Consola imprime Wed. Os cases 1 e 2 foram verificados e saltados. Após break o switch termina — default não corre.
Sem break, o JavaScript continuaria para os corpos dos cases seguintes. Chama-se fall-through. Principiantes quase sempre querem um break após cada case concluído.
let day = 2;
switch (day) {
case 1:
console.log("Mon");
case 2:
console.log("Tue");
case 3:
console.log("Wed");
break;
default:
console.log("other");
}
Sem break, os cases seguintes também correm
day é 2. A coincidência começa em case 2, imprime Tue, continua para case 3 e imprime Wed antes do break. Queria um rótulo; obteve dois. Ponha break sob cada case concluído, salvo se partilhar código de propósito.
let day = 9;
switch (day) {
case 1:
console.log("Mon");
break;
case 2:
console.log("Tue");
break;
default:
console.log("other");
}
default cobre «nenhum destes»
day é 9. Nenhum case coincide, por isso corre default e vê other. Use default quando valores inesperados ainda precisam de uma mensagem segura. Omita só se o silêncio for aceitável.
let status = "warn";
switch (status) {
case "ok":
console.log("green");
break;
case "warn":
console.log("yellow");
break;
case "err":
console.log("red");
break;
default:
console.log("unknown");
}
Os cases também podem ser cadeias
status é "warn", por isso vê yellow. Cases em cadeia são comuns para códigos curtos de formulário ou API. Intervalos como «nota de 60 a 90» continuam para if / else if — switch quer rótulos discretos.
let day = 1;
let label;
switch (day) {
case 1:
label = "Mon";
break;
case 2:
label = "Tue";
break;
default:
label = "other";
}
console.log(label);
Nomeie o resultado da coincidência
Defina label dentro de cada case (e em default), depois use-o uma vez. Aqui label passa a "Mon". O mesmo padrão de if / else — primeiro escolhe, depois usa.
Mostre o caminho escolhido na página
Crie uma mensagem curta com switch e escreva-a na página.
<!DOCTYPE html>
<html>
<head>
<title>Switch — page choice</title>
</head>
<body>
<p id="out">…</p>
<script>
let day = 3;
let msg;
switch (day) {
case 1:
msg = "Mon";
break;
case 2:
msg = "Tue";
break;
case 3:
msg = "Wed";
break;
default:
msg = "other";
}
let box = document.getElementById("out");
box.textContent = "day=" + msg;
</script>
</body>
</html>
day é 3, a página mostra day=Wed. Ponha day a 9, actualize e deverá ver day=other. A lição seguinte (for) repete trabalho muitas vezes; para «qual rótulo fixo?» a ferramenta continua a ser switch.
Experimente você
- Construa um
switchcomlet day = 1que registe"Mon"no case1. - Acrescente cases para
2e3combreakdepois de cada um. - Ponha
daya9e confirme quedefaultregista"other". - Faça switch numa cadeia
statuscom"ok","warn","err". - Remova temporariamente um
breake observe o fall-through na Consola. - Na demo HTML mude só
day, actualize e leia o novo textoday=.
Erros comuns
- Esquecer
breakapós um case (os seguintes também correm) - Usar
switchpara intervalos abertos (score >= 60) — prefiraif/else if - Misturar tipos para um número nunca coincidir com um case em cadeia
- Omitir
defaultquando valores desconhecidos ainda precisam de mensagem - Substituir cada
ifporswitchquando a verificação não é uma lista de rótulos fixos
Resumo
switchcombina um valor com vários rótuloscasebreakpára o switch após uma coincidênciadefaultcorre quando nada coincidiu- Melhor para valores discretos; intervalos ficam com
if/else if - Guarde um rótulo se precisar do resultado depois; mostre-o na página quando ajudar
- Seguinte: ciclo for — repetir trabalho um número fixo de vezes
🧠 Teste Seu Conhecimento
Teste Seu Conhecimento
Desafie-se com este questionário interativo e veja o quão bem você entende o tópico
📝 Instruções
- Leia cada pergunta cuidadosamente
- Selecione a melhor resposta para cada pergunta
- Você pode refazer o quiz quantas vezes quiser
- Seu progresso será mostrado no topo