Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Comando switch
  2. Switch com múltiplos cases
  3. Switch com string
  4. Switch com objeto
  5. switch com "enum"
  6. switch com range
  7. switch pattern

Para fazermos escolhas na linguagem Java, usamos o comando switch que irá comparar um valor a um grupo de casos e executar um trecho para um caso específico quanto o retorno da comparação for true.

Os comandos de escolha-caso bem como o seu funcionamento já foi discutido em Portugol: Comando de Escolha sendo a leitura recomendada.

A condição mostrada nas sintaxes abaixo podem ser compostas de uma ou mais condições utilizando os operadores relacionais e lógicos visto em JavaScript Básico: Operadores.

Para fazermos escolhas na linguagem JS, utilizamos o comando switch que possui sua sintaxe e fluxograma apresentados abaixo. O comando switch utiliza o comando break como parte de sua sintaxe.

Fig. 5: Fluxograma Comando switch
Sintaxe
switch(valor)
{
    case caso1: 
	        //código
    break;
    case caso2: 
	        //código
    break;
    default:
	        //código
    break;
}

Quando o switch é executado, o valor é comparado sequencialmente a todos os valores contidos nas cláusulas case até que a comparação seja verdadeira e o trecho de código é executado.

O case default é executado caso nenhum case testado seja verdadeiro. O uso do case default não é obrigatório, mas por boas práticas deve ser usado para verificação de erros.

Exemplo 1: valor como argumento
let valor = 1;
switch(valor)
{
    case 1: console.log(1); break;
    case 3: console.log(2); break;
    default: console.log("invalido"); break;
}
Saída
1
Exemplo 1.1: função como argumento
function funcao(parametro){
    return 1 //
}

switch(funcao(2))
{
    case 0: console.log("0"); break
    case 1: console.log("1"); break
    case 2: console.log("2"); break
    default: console.log("invalido"); break
}
Saída
1

Para a execução de um mesmo trecho de código para mais de uma caso, basta adicionar as cláusulas case em sequência ou um abaixo do outra separadas por (:).

Exemplo 2
let valor = 1;
switch(valor)
{
    case 1: 
    case 3: console.log(2); break;
    default: console.log("invalido"); break;
}
Saída
2

O comando switch pode também ser utilizando com o tipo de dado string como valores de comparação contidos nos cases:

Exemplo 3
let valor = "str2";
switch(valor)
{
    case "str1": console.log(valor); break;
    case 'str2': console.log(valor); break;
    default: console.log("invalido"); break;
}
Saída
str2

Não há um tipo de dado char na linguagem JS. Sendo assim, uma string de um caracter pode ser utilizada nos cases do switch.

O comando switch pode também ser utilizando com o tipo de dado objeto, contanto que o atributo utilizado pelo comando seja do tipo numérico ou string como no exemplo abaixo:

Exemplo 4
let obj = { campo: 2 , desc: "string"};

switch(obj.campo)
{
    case 1: console.log(obj.campo); break;
    case 2: console.log(obj.desc); break;
    default: console.log("invalido"); break;
}
Saída
string

Como JS não possui suporte a enums, vamos utilizar um objeto e o método freeze de Object para simular os membros de um enum. Dessa forma, podemos usar esse objeto nos cases do comando switch como visto abaixo:

Exemplo 5
//enum simulado
const OPCOES = Object.freeze({
  OPCAO1: 1,
  OPCAO2: 2,
  OPCAO2: 3
});

let op = OPCOES.OPCAO3

switch(op){
  case OPCOES.OPCAO1 : console.log("opcao1"); break
  case OPCOES.OPCAO2 : console.log("opcao2"); break
  case OPCOES.OPCAO3 : console.log("opcao3"); break
  default: console.log("opcao invalida"); break
}
Saída
opcao3

JS não possui suporte ao uso de intervalo de valores nos cases do comando switch com o operador (..) fornecido em algumas linguagens.

Para usar intervalo de valores, vamos utilizar o valor booleano true como argumento para o switch e uma variável que fará parte das expressões de intervalo.

Sintaxe
nome_variavel = valor

switch(true)
{
    case <expressao>: /*corpo*/ ; break
}
Exemplo 6
let a = 10

switch(true){
  case a >= 9: console.log("muito bom"); break
  case a >= 7: console.log("bom"); break
  case a >= 5: console.log("regular"); break 
  case a >= 3: console.log("ruim"); break   
  case a >= 1: console.log("muito ruim"); break
  default: console.log("demitido"); break
}
Saída
muito bom

Um intervalo de valores pode ser definido utilizando uma expressão relacional, utilizando operadores relacionais e lógicos, como mostrada nos cases do comando switch no exemplo abaixo:

Exemplo 7
let a = 5

switch(true){
  case a > 8: console.log("aprovado"); break
  case a > 6 && a <= 8: console.log("recuperação"); break
  case a <= 6: console.log("reprovado"); break 
}
Saída
reprovado
  1. 19/12/2025 - revisão 5 - Adição: Exs. 1.1, switch com "enum" e switch com intervalo
  2. 14/08/2025 - revisão 4 - Ajustes: pontuais, target de links internos e 'Objetivos'; Adição: Switch com string e objeto
  3. 26/09/2024 - revisão 3 - Correção em links 'Anterior';Ajustes pontuais
  4. 02/09/2024 - revisão 2 - Correção em links de objetivos
  5. 05/10/2023 - revisão 1 - Correção em layout, navegação e erros gramaticais
  6. 31/05/2023 - versão inicial