Percursos
/
JavaScript
JavaScript
/
Programa
/
Instrução switch
In

Instrução switch em JavaScript

4 exercícios

Sobre Instrução switch

Sintaxe geral

Além da condicional, o JavaScript também tem a instrução switch para executar lógica de forma condicional. Utiliza-se quando é preciso comparar uma única variável com várias variantes. A comparação é feita através de uma verificação de igualdade estrita (===); vê comparação de conceitos. Para uma variável x, a instrução switch em JavaScript tem a seguinte sintaxe.

switch (x) {
  case option1:
    // code that is executed when "x === option1" is true
    break;
  case option2:
    // code that is executed when "x === option2" is true
    break;
  default:
    // code that is executed when x does not equal any of the
    // options
}

O case default é opcional e serve para executar algum código quando nenhuma das outras opções corresponde à variável.

Fallthrough por omissão

As instruções break acima são necessárias porque, por omissão, todos os case são "fallthrough" em JavaScript. Isto significa que, sem qualquer instrução break, todo o código dos case abaixo da primeira opção correspondente seria executado, mesmo que x não correspondesse a essas opções. Este comportamento de "fallthrough por omissão" é uma armadilha comum quando se utiliza switch em JavaScript. Dentro de uma função, também podes usar return em vez de break para evitar este problema.

Podes tirar partido do comportamento de fallthrough quando queres aplicar o mesmo código a vários case. Encontras um exemplo disto na documentação da MDN.

Âmbito

Por omissão, as variáveis das diferentes instruções case partilham o mesmo âmbito. Isto pode dar origem a um comportamento inesperado. Por exemplo, ao copiar e colar um case, podes acabar com uma declaração let message em dois case, o que resulta num erro; vê a documentação da MDN. Para evitar problemas causados pelo âmbito partilhado, podes criar um âmbito separado para cada case, adicionando blocos de código com chavetas para cada um.

switch (x) {
  case option1: {
    // Variables declared here are contained to this case.
    break;
  }
  case option2: {
    // ...
    break;
  }
  default: {
    // ...
  }
}

Utilizar expressões

Em vez de uma variável x, também podes usar uma expressão. Essa expressão é avaliada uma única vez, no início da instrução switch, e o resultado é comparado com os case. Um uso comum disto é o "type switch", que executa código diferente consoante o tipo de uma variável.

switch (typeof x) {
  case 'string':
    // code that is executed when x is a string
    break;
  case 'number':
    // code that is executed when x is a number
    break;
  default:
    // code that is executed when x has some other type
}

As opções também podem ser expressões.

Editar via GitHub A ligação abre numa nova janela ou separador

Aprende Instrução switch