JavaScript switch: rótulos case e fallback default
A instrução switch do JavaScript avalia uma expressão uma vez e direciona a execução para um rótulo case correspondente usando igualdade estrita (===). Use-a para substituir cadeias de if...else quando cada ramificação testa a mesma variável contra valores discretos, como despacho de comandos, mapeamento de status ou tratamento de opções fixas. O switch agrupa esse fluxo de controle baseado em valor em um único bloco, com comportamento de fall-through explícito e controlado por break.
Exemplo de JavaScript Switch para roteamento por valor
Saída:
A saída aparecerá aqui...
Saída:
Salvando arquivo
Como este exemplo funciona
switch (comando)avaliacomandouma vez e compara o resultado com cada rótulocasedo JavaScript na ordem do código.- O
case "salvar"corresponde, então a execução salta para essa ramificação e executaconsole.log("Salvando arquivo"). breaksai do blocoswitch. Sem ele, a execução segue para o próximo corpo decase, independentemente de o rótulo corresponder.defaultfunciona como caso geral: roda quando nenhum rótulocasecorresponde. Não é necessáriobreakapósdefaultquando ele aparece por último.
Em uma instrução case do JavaScript como case "salvar":, o rótulo é um valor para correspondência, não uma condição booleana separada.
Erros comuns em JavaScript switch case
Esquecer o break: Sem ele, a execução cai em todos os corpos de case subsequentes. Omita break apenas ao agrupar casos de forma intencional.
const comando = "salvar";
switch (comando) {
// Errado: exibe as duas mensagens quando comando é "salvar"
case "salvar":
console.log("Salvando");
case "fechar":
console.log("Fechando");
}
Misturar tipos nos rótulos case: O switch usa ===, então "2" nunca corresponde a 2. Converta a expressão para um tipo consistente antes do switch.
Reutilizar let/const entre casos: Todos os casos compartilham o escopo do bloco switch. Dois casos que declaram let resultado causam SyntaxError; envolva cada case em { } para criar escopos léxicos separados.
switch vs if…else
Use switch quando… | Use if...else quando… |
|---|---|
| Comparar uma expressão com vários valores fixos | As condições envolvem intervalos, desigualdades ou variáveis diferentes |
| Vários casos compartilham o mesmo manipulador via fall-through | Cada ramificação tem lógica composta e independente |
Para mapeamentos grandes de valor para ação, uma busca em objeto pode ser mais limpa que as duas abordagens. Trate chaves ausentes para não chamar undefined como função.
Mais exemplos
Agrupe vários rótulos case para compartilhar um único manipulador:
const dia = "Sáb";
switch (dia) {
case "Sáb":
case "Dom":
console.log("Fim de semana");
break;
default:
console.log("Dia útil");
}
Empilhar rótulos case sem break entre eles direciona todos os valores listados para o mesmo bloco. Mantenha o manipulador compartilhado curto e finalize com break, return ou throw para evitar executar casos posteriores por acidente.
Se precisar de um comportamento diferente por rótulo, evite fall-through e dê a cada case seu próprio corpo e saída.
FAQ
JavaScript switch usa == ou ===?
switch compara com igualdade estrita (===). Não ocorre coerção de tipo, então 0 não corresponde a "0" e null não corresponde a undefined. Garanta que a expressão e os rótulos case compartilhem o mesmo tipo.
O que acontece se você omitir break em um case do switch?
A execução cai no corpo do próximo case, independentemente do rótulo. Isso continua até encontrar break, return ou o fim do bloco switch. O fall-through intencional é usado para agrupar vários rótulos case sob o mesmo manipulador.
default pode aparecer antes de outros cases?
Sim. default pode ser colocado em qualquer ponto do bloco switch. Ele ainda roda apenas quando nenhum case corresponde, e a execução continua a partir dali; portanto, adicione break após default, a menos que ele seja a última cláusula.