A instrução switch é usada para executar ações diferentes com base em condições diferentes.

Use switch para selecionar um dos muitos blocos de código a serem executados, no caso de correspondência de comparação.

Sintaxe:

switch(expressao) {
  case x:
    // bloco de código caso expressao == x
    break;
  case y:
    // bloco de código caso expressao == y
    break;
  default:
   // bloco de código padrão nenhum caso sendo atendido
}

A instrução switch funciona da seguinte forma:

  • A expressão do comutador é avaliada uma vez.
  • O valor da expressão é comparado com os valores de cada caso.
  • Se houver uma correspondência, o bloco de código associado será executado.

O método getDay() retorna o dia da semana como um número entre 0 e 6.

(Domingo = 0, segunda-feira = 1, terça-feira = 2..)

Este exemplo usa o número do dia da semana para calcular o nome do dia da semana:

 

switch (new Date().getDay()) {
  case 0: dia = "Domingo"; break;
  case 1: dia = "Segunda-feira"; break;
  case 2: dia = "Terça-feira "; break;
  case 3: dia = "Quarta-feira "; break;
  case 4: dia = "Quinta-feira "; break;
  case 5: dia = "Sexta-feira "; break;
  case 6: dia = "Sábado";
}

O resultado do dia será:

Segunda-feira

A Quebra no Switch

Quando o JavaScript alcança uma palavra-chave break a avaliação da instrução switch.

Não é necessário interromper o último caso em um bloco de chave. O bloco quebra (termina) lá de qualquer maneira.

Se instrução break for omitida ao fim da execução de um bloco de uma comparação verdadeira, a próxima comparação será executada mesmo se a avaliação não corresponder ao caso.

A Palavra-Chave Default

A palavra-chave default especifica o código a ser executado se não houver correspondência de caso:

O método getDay()retorna o dia da semana como um número entre 0 e 6.

Se hoje não for sábado (6) nem domingo (0), escreva uma mensagem padrão:

switch (new Date().getDay()) {
  case 6: text = "Hoje é sábado"; break;
  case 0: text = "Hoje é domingo"; break;
  default: text = "Não é fim de semana!";
}

 

O resultado do texto será:

Não é fim de semana!

O caso default não precisa ser o último caso em um bloco de chave:

 

switch (new Date().getDay()) {
  default: text = "Não é fim de semana"; break;
  case 6: text = "Hoje é sábado"; break;
  case 0: text = "Hoje é domingo";
}

Se default não for o último caso no bloco de comutação, lembre-se de encerrar o caso padrão com a instrução break.

Blocos de Código Comuns

Os blocos de código podem ser compartilhado por diferentes comparações.

Neste exemplo, os casos 4 e 5 compartilham o mesmo bloco de código e 0 e 6 compartilham outro bloco de código:

switch (new Date().getDay()) {
   case 4:
   case 5:
      texto = "Logo será fim de semana";
      break;
   case 0:
   case 6:
      text = "É fim de semana!";
      break;
   default:
     text = "Esperando pelo fim de semana!";
}

Detalhes de Comutação

Se vários casos corresponderem a um valor de caso, o primeiro caso será selecionado.

Se nenhum caso correspondente for encontrado, o programa executará o caso default.

Se default não for encontrado, o programa continuará com as instruções após a troca.

Comparação Estrita

Os casos de troca usam comparação estrita (===).

Os valores devem ser do mesmo tipo para corresponder.

Uma comparação estrita só pode ser verdadeira se os operandos forem do mesmo tipo.

Neste exemplo, não haverá correspondência para x:

var x = "0";
switch (x) {
  case 0: texto = "ligado"; break;
  case 1: texto = "deligado"; break;
  default: texto = "valor não encontrado";
}

Teste-se com exercícios

Crie uma declaração switch que alertará "Olá" se frutas for "banana" e "Bem-vindo" se frutas for "maçã".

switch (fruta) {
   "Banana":
      alert ("Olá"); 
      break;
   "Maçã":
      alert ("Bem-vindo");
}