JavaScript: switch

A estrutura condicional switch executa pelo menos um trecho de código se houver uma correspondência entre um valor passado e uma lista pré-definida de opções. Aprenda como utilizar essa estrutura aqui.

A estrutura condicional switch permite executar um bloco de código diferente de acordo com cada opção (cada case) especificada.


Guia do artigo:

Visão geral

O uso do switch é indicado quando os valores a serem analisados nessas condições são pré-definidos.

Considerando o seguinte código:

let tipoUsuario = 'Gerente' switch (tipoUsuario) { case 'Admin': mensagem = '*|*| Feliz Natal, chefe! |*|*'; break case 'Gerente': mensagem = 'Boas festas, meu amigo!'; break default: mensagem = 'Boas festas!'; }

O valor atribuído à variável mensagem será: "Boas festas, meu amigo!". A Figura 1 demonstra o funcionamento do condicional switch.

Figura 1. Funcionamento da estrutura condicional switch.

Sintaxe

switch(expressao){ case n1: [bloco de código 1] break; case n2: [bloco de código 2] break; case [...n]: [bloco de código 2] break; default: [bloco de código 3] }

Na prática

Exemplo 1: Exibindo diferentes alimentos de acordo com a necessidade do usuário

No exemplo a seguir demonstramos como exibir diferentes alimentos de acordo com a necessidade do usuário:

let alimento = 'Gordura' switch (alimento) { case 'Proteína': mensagem = 'Carne, leite, aveia, amêndoas'; break; case 'Carboidrato': mensagem = 'Banana, batata doce, feijão, pão'; break; default: mensagem = 'Cuidado com a alimentação!'; }

O valor atribuído a mensagem é: "Cuidado com a alimentação!".

Exemplo 2: o uso do break não é necessário?

Neste exemplo demonstramos que o uso do break não é necessário, porém ao não declará-lo e a depender da lógica de negócio, um erro pode ser inserido no projeto.

let cargo = 'gerente' let salario = 2000 switch (cargo) { case 'gerente': salario *= 1.15; case 'supervisor': salario *= 1.10; default: salario *= 1.05; }

O valor atribuído a salario é 2.656,50. A ausência do break em cada bloco de código faz com que o código declarado dentro de cada case seja executado independentemente do case atender à condição especificada no switch.

Exemplo 3: Quando ausência do break evita a escrita de linhas de código desnecessárias

No exemplo a seguir demonstramos uma situação em que a ausência do break evita a escrita de linhas de código desnecessárias:

let mes = 'Maio' switch (mes) { case 'Janeiro': case 'Fevereiro': case 'Março': console.log('Verão!'); break; case 'Abril': case 'Maio': case 'Junho': console.log('Outono!'); break; case 'Julho': case 'Agosto': case 'Setembro': console.log('Inverno!'); break; case 'Outubro': case 'Novembro': case 'Dezembro': console.log('Primavera!'); }

O valor impresso no console é "Outono".

Exemplo 4: customizando uma mensagem de boas-vindas

No exemplo a seguir demonstramos como customizar uma mensagem de boas-vindas com switch:

let sexo = 'feminino' switch (sexo) { case 'feminino': console.log('Bem-vinda!'); break; case 'masculino': console.log('Bem-vindo!'); default: console.log('por favor informar um sexo valido: feminino/masculino'); }

O valor impresso no console é "Bem-vinda!".

Exemplo 5

No exemplo a seguir demonstramos como obter o nome do mês a partir do seu respectivo número com switch:

let mes = 4; let nomeMes = '' switch (mes) { case 1: nomeMes = 'Janeiro'; break; case 2: nomeMes = 'Fevereiro'; break; case 3: nomeMes = 'Março'; break; case 4: nomeMes = 'Abril'; break; case 5: nomeMes = 'Maio'; break; case 6: nomeMes = 'Junho' break case 7: nomeMes = 'Julho'; break; case 8: nomeMes = 'Agosto'; break; case 9: nomeMes = 'Setembro'; break; case 10: nomeMes = 'Outubro'; break; case 11: nomeMes = 'Novembro'; break; case 12: nomeMes = 'Dezembro'; break; default: nomeMes = 'Mês inexistente'; } console.log(nomeMes)

O valor impresso no console é "Abril". Caso o valor seja diferente dos especificados em cada case, é impresso "Mês inexistente".

Compatibilidade

Engine Versão Minima
Node.js (V8) qualquer
Safari (WebKit) qualquer
Chrome (V8) qualquer
Microsoft Edge (ChakraCore) qualquer
Firefox (Gecko) qualquer

Nota: O Opera utiliza atualmente grande parte do código do Chrome como base para o seu próprio desenvolvimento e por isso ele não é mencionado nesta listagem.

Confira também

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados