Validando condições com `switch`/`case`
O comando switch
é usado para simplificar o controle de fluxo quando há várias condições possíveis baseadas no valor de uma variável. Ele é uma alternativa ao uso de múltiplos blocos if
/else-if
.
Sintaxe básica
A sintaxe básica do switch
é a seguinte:
switch (expressao) {
case valor1:
// Código executado se expressao === valor1
break
case valor2:
// Código executado se expressao === valor2
break
default:
// Código executado se nenhum dos casos for atendido
}
Exemplo:
let dia = 3
switch (dia) {
case 1:
console.log("Segunda-feira")
break
case 2:
console.log("Terça-feira")
break
case 3:
console.log("Quarta-feira")
break
default:
console.log("Dia inválido")
}
Saída:
Quarta-feira
Evitando o uso de switch
Embora o switch
seja útil em muitos casos, ele pode tornar o código mais difícil de manter, especialmente quando há muitos casos ou quando as condições são complexas. Além disso, ele não é tão flexível quanto outras abordagens, como objetos ou arrays.
Por que evitar o switch
?
- Dificuldade de manutenção: Um
switch
com muitos casos pode se tornar longo e difícil de ler. - Falta de flexibilidade: O
switch
funciona apenas com valores fixos, como números ou strings, e não permite condições mais complexas. - Propenso a erros: Esquecer o
break
pode causar comportamentos inesperados.
Alternativa com objetos
Em vez de usar switch
, você pode usar um objeto para mapear valores a funções ou resultados.
Exemplo:
let dia = 3
const diasDaSemana = {
1: "Segunda-feira",
2: "Terça-feira",
3: "Quarta-feira",
4: "Quinta-feira",
5: "Sexta-feira",
6: "Sábado",
7: "Domingo"
}
console.log(diasDaSemana[dia])
Saída:
Quarta-feira
Alternativa com arrays
Se os valores forem sequenciais, você pode usar um array.
Exemplo:
let dia = 3
const diasDaSemana = [
"Dia inválido", // índice 0
"Segunda-feira",
"Terça-feira",
"Quarta-feira",
"Quinta-feira",
"Sexta-feira",
"Sábado",
"Domingo"
]
console.log(diasDaSemana[dia])
Saída:
Quarta-feira
Quando usar switch
Apesar das alternativas, o switch
ainda é útil em casos simples, especialmente quando há poucos valores fixos a serem tratados. No entanto, para cenários mais complexos, considere as alternativas acima para manter o código mais limpo e flexível.
Usando múltiplos casos para o mesmo bloco de código
Você pode agrupar vários casos que compartilham o mesmo comportamento.
Exemplo:
let fruta = "maçã"
switch (fruta) {
case "maçã":
case "banana":
case "laranja":
console.log("Essa fruta está disponível.")
break
default:
console.log("Essa fruta não está disponível.")
}
Saída:
Essa fruta está disponível.
O papel do break
O comando break
é usado para interromper a execução do switch
. Sem ele, o código continuará executando os casos subsequentes, mesmo que a condição já tenha sido atendida.
Exemplo sem break
:
let cor = "verde"
switch (cor) {
case "vermelho":
console.log("Pare!")
case "amarelo":
console.log("Atenção!")
case "verde":
console.log("Siga!")
}
Saída:
Siga!
Exemplo corrigido com break
:
let cor = "verde"
switch (cor) {
case "vermelho":
console.log("Pare!")
break
case "amarelo":
console.log("Atenção!")
break
case "verde":
console.log("Siga!")
break
}
Saída:
Siga!
Boas práticas
- Sempre use
break
: Evite comportamentos inesperados ao esquecer obreak
em um caso. - Use
default
: Sempre inclua um casodefault
para tratar valores não previstos. - Prefira
switch
para valores fixos: Useswitch
quando as condições forem baseadas em valores fixos, como números ou strings.
Com o switch
, você pode organizar seu código de forma mais clara e eficiente quando há múltiplas condições baseadas em valores. Experimente usá-lo para simplificar seus fluxos de controle!