Introdução
As instruções condicionais são um dos fluxos de controle mais importantes em qualquer linguagem de programação. Nós as usamos para ditar o comportamento da execução sob alguma condição. No Javascript, blocos condicionais podem ser construídos usando if, else if, else, e switch instruções.
A instrução switch torna o fluxo de controle fácil de ler ao tomar a decisão com base em alguns resultados possíveis para a expressão. Dependendo do caso de uso correspondente, um ou mais blocos de código podem ser executados. O controle switch é semelhante à instrução else if. No entanto, switch é mais legível em termos de sintaxe. Também é ideal para cenários com múltiplos resultados possíveis.
Neste tutorial, focaremos na instrução switch em Javascript e a implementaremos para construir estruturas de controle complexas. Também aprenderemos como usar as instruções break , case, e default dentro do bloco switch para direcionar o fluxo de controle.
Usando a Instrução Switch
A instrução switch funciona comparando o valor de uma variável com expressões possíveis. Em seguida, executa o bloco de código correspondente ao resultado. A sintaxe da instrução switch não é diferente da instrução if. Em resumo, a sintaxe da instrução switch é escrita como:
|
1 2 |
switch() { } |
Abaixo está um exemplo da instrução switch. Ela possui dois casos ou dois resultados possíveis, juntamente com uma opção de fallback especificada pela palavra-chave default. Esta opção de fallback é executada quando a execução é concluída ou quando nenhum caso correspondente é encontrado:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
switch (expression) { case x: // executa este bloco de código quando a expressão corresponde ao caso x break; case y: // executa este bloco de código quando a expressão corresponde ao caso y break; default: // bloco padrão } |
O código acima é executado da seguinte forma:
-
Primeiro, a expressão é avaliada.
-
Em seguida, o resultado da expressão é comparado com o case x. Se o valor corresponder, o bloco de código sob o case x é executado.
-
Se a expressão não corresponder ao case x, então o case y é comparado. Se a correspondência for encontrada, então o código do case y é executado.
-
Finalmente, se nem o case x nem o case y corresponderem, então o código default é executado e o controle sai do bloco switch .
Exemplo Prático
Para entender a instrução switch, vamos dar uma olhada em um exemplo prático. Estaremos extraindo o valor do dia da semana para a data atual, usando o método getDay() do objeto Date do Javascript. Este valor é um número, para domingo até 6 que é para sábado. Nós o avaliaremos em relação aos valores para determinar qual dia da semana é:
|
1 |
const day = new Date().getDay(); |
Em seguida, enviaremos este valor para a instrução switch . A instrução switch será executada de cima para baixo para compará-lo com os casos e determinar qual dia da semana é. Assim que o caso for encontrado, o comando break impedirá que o bloco switch continue a avaliar as instruções:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
// Define o dia atual da semana em uma variável, sendo 0 Domingo e 6 Sábado const day = new Date().getDay(); switch (day) { case 0: console.log("É domingo"); break; case 1: console.log("É segunda-feira!"); break; case 2: console.log("É terça-feira."); break; case 3: console.log("Já é quarta-feira!"); break; case 4: console.log("É quinta-feira"); break; case 5: console.log("Feliz sexta-feira!"); break; case 6: console.log("É sábado!"); break; default: console.log("Nenhum caso correspondido") } |
Dependendo do valor retornado pelo getDate() método, ele será testado em relação aos casos um de cada vez, começando do topo. O resultado será diferente dependendo do dia em que você executou o código. O bloco de código default é colocado para que, se nenhum caso corresponder, possamos lidar com esse cenário. No entanto, aqui neste código, o default nunca será chamado, pois há apenas um número finito de dias na semana.
A instrução break garante que, uma vez que o caso tenha correspondido, nenhum outro caso seja testado e o controle saia da instrução switch . Isso torna o programa mais eficiente e rápido.
Testando intervalos no Switch
Até agora, vimos casos de uso muito simples. Mas pode haver momentos em que seja necessário testar em relação a um intervalo de valores, em vez de um único valor. Podemos fazer isso definindo nossa expressão como true e realizando uma operação dentro de cada instrução case .
Vamos demonstrar esse caso de uso com a ajuda de um exemplo. Pegaremos um número e, em seguida, o converteremos em uma nota usando a categorização abaixo:
-
Nota de 90 ou superior é um A
-
Nota de 80 a 89 é um B
-
Nota de 70 a 79 é um C
-
Nota de 60 a 69 é um D
-
Nota de 59 ou inferior é um F
Escreveremos essas instruções como instruções switch . Abaixo está o código para isso:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
// Nota do aluno const grade = 87; switch (true) { // Se a nota for 90 ou maior case grade >= 90: console.log("A"); break; // Se a nota for 80 ou maior case grade >= 80: console.log("B"); break; // Se a nota for 70 ou maior case grade >= 70: console.log("C"); break; // Se a nota for 60 ou maior case grade >= 60: console.log("D"); break; // Qualquer valor igual ou inferior a 59 é reprovação default: console.log("F"); } |
Ao contrário dos exemplos de código acima, aqui definimos a expressão entre parênteses como true. Portanto, qualquer instrução case que corresponda ao valor true será executada. Assim como a instrução else if, a primeira instrução que corresponder ao valor especificado será executada. Aqui a saída será B, apesar do fato de que até mesmo C e D também correspondem à expressão.
Múltiplos Casos
Se você deseja ter mais de um case com o mesmo bloco de código, também é possível. Isso é análogo à condição ou na instrução if. Nesses cenários, podemos especificar mais de um case para cada bloco de código.
Para ilustrar este conceito, forneceremos um exemplo com os meses do ano. Vamos categorizar esses meses nas estações do ano. Primeiro, usaremos o novo método Date() para encontrar um número correspondente ao mês atual e aplicá-lo à variável month. O método Date().getMonth() retorna um número de 0 a 11, sendo 0 correspondente a janeiro e 11 associado a dezembro.
Categorizaremos usando a especificação abaixo:
-
Inverno: janeiro, fevereiro e março
-
Primavera: abril, maio e junho
-
Verão: julho, agosto e setembro
-
Outono: outubro, novembro e dezembro
Aqui está como o código ficará:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
const month = new Date().getMonth(); switch (month) { // Janeiro, Fevereiro, Março case 0: case 1: case 2: console.log("Inverno"); break; // Abril, Maio, Junho case 3: case 4: case 5: console.log("Primavera"); break; // Julho, Agosto, Setembro case 6: case 7: case 8: console.log("Verão"); break; // Outubro, Novembro, Dezembro case 9: case 10: case 11: console.log("Outono"); break; default: console.log("Algo deu errado."); } |
Quando o código acima for executado, dependendo do mês, o nome da estação será exibido no console.
Conclusão
Neste tutorial, demonstramos como usar a instrução switch em aplicações JavaScript. Também aplicamos a instrução switch a um intervalo e múltiplos casos, juntamente com a palavra-chave default. Se você quiser aprender mais sobre JavaScript, pode conferir os seguintes tutoriais:
- Trabalhando com JavaScript: O que são Objetos?
- JavaScript: Um Tutorial sobre Como Indexar, Dividir e Manipular Strings
- Trabalhando com JavaScript: Como as Classes Operam
Feliz computação!
Comentários
Nenhum comentário ainda. Seja o primeiro.