O que é o switch case?
É outra estrutura condicional. Em vez de encadear vários
else if, você compara uma variável com
vários valores possíveis, cada um chamado de case
(caso). Com muitas comparações, fica mais organizado que o
if.
switch (variavel) {
case valor:
instrução;
break;
default:
instrução;
}
variavel: a expressão que será avaliada.-
case valor: se a variável for igual a esse valor, as instruções do case são executadas. -
break: encerra o switch. Sem ele, o programa continua executando o case seguinte (veja o exemplo 3). default: executa quando nenhum case corresponde.
Exemplo 1: nome do mês
O exemplo clássico: transformar o número do mês no nome dele. O
console.log (ou a mensagem) fica fora do switch,
para não repetir em todo case.
let nomeMes;
switch (mes) {
case 1:
nomeMes = "Janeiro";
break;
case 2:
nomeMes = "Fevereiro";
break;
// ... até o case 12
default:
nomeMes = "Mês inexistente";
}
Código desta seção: js/switch.js, seção 1.
Exemplo 2: média e conceito (vários cases juntos)
O switch do JavaScript não compara intervalos (não existe
case media >= 7). A solução: empilhar vários
case sem break entre eles, então todos
executam o mesmo bloco.
switch (media) {
case 0: case 1: case 2: case 3: case 4:
resultado = "Reprovado";
break;
case 5: case 6:
resultado = "Recuperação";
break;
case 7: case 8: case 9: case 10:
resultado = "Aprovado";
break;
default:
resultado = "Nota inválida";
}
Como o switch só compara valores exatos, a média (que pode ter
decimais, como 6,75) é arredondada para baixo com
Math.floor() antes de entrar no switch. Digite as 4
notas (n1 a n4).
const media = (n1 + n2 + n3 + n4) / 4;
switch (Math.floor(media)) {
// ... os cases de cima
}
Código desta seção: js/switch.js, seção 2.
Exemplo 3: o perigo de esquecer o break
Salário de um professor conforme a titulação: especialista 5%, mestre
10%, doutor 15% (o doutor é o default). O salário base é
2000.
switch (titulacao) {
case "especialista":
salario *= 1.05; // mesmo que salario = salario * 1.05
break;
case "mestre":
salario *= 1.10;
break;
default:
salario *= 1.15;
break;
}
Sem o break, o programa executa o case certo
e continua para os de baixo. Para "mestre" o
resultado seria 2530 em vez de 2200. Marque e desmarque a caixa para
ver a diferença.
Código desta seção: js/switch.js, seção 3.
Exemplo 4: aumento de salário por cargo
Aqui o switch compara textos (strings), não números.
Aumento por cargo: Estagiário 100%, Analista 50%, Gerente 30%,
Presidente 10%. Se o cargo não existir, cai no default.
const salario = 1000.56;
const cargo = "Estagiário";
let aumento = 0;
switch (cargo) {
case "Estagiário": aumento = 100 / 100; break;
case "Analista": aumento = 50 / 100; break;
case "Gerente": aumento = 30 / 100; break;
case "Presidente": aumento = 10 / 100; break;
default: alert("Favor escolher um cargo válido!");
}
console.log(aumento);
O texto do case precisa ser idêntico ao valor, inclusive
maiúsculas e acento. Escolha "Selecione..." para ver o
default agir: aparece o alert().
Código desta seção: js/switch.js, seção 4.
Switch ou if?
O switch trata os casos de uma única variável. O
if é mais flexível: dá para combinar várias condições de
uma vez, como
if (media >= 7 && frequencia > 75). Por
isso o switch não substitui o if em todas as situações.
Use o switch quando houver muitos valores exatos para uma mesma
variável.