switch

Сравнивает значение выражения по различными вариантами и при совпадении выполняет соответствующий код

Синтаксис

Выделить все
switch (expression) {
   case label1:
      statements1
      [break]
   case label2:
      statements2
      [break]
   ...
   case labelN:
      statementsN
      [break]
   default:
      statements_def
      [break]
}

Аргументы

expression
Выражение для сравнения
labelN
Значение, с которым сравнивать
statementsN
Ветка кода, на которую перейдет управление при совпадении expression с labelN
statements_def
Ветка кода, которая будет выполнена, если expression не совпадет ни с одним значением labelN

Описание, примеры

Конструкция switch служит для сравнения значения на равенство с различными вариантами.

При этом равенство подразумевается в смысле оператора "==", сравнивать с регулярным выражением или как-то еще switch не умеет.

Если совпадение найдено, то соответствующий код исполняется до оператора break, который прекращает выполнение switch и передает управление дальше.

Пример: обычное применение switch
Выделить все
var a = 2+2
switch (a) {
  case 3:
    alert('Маловато')
    break
  case 4:
    alert('В точку!')
    break
  case 5:
    alert('Перебор')
    break
  default:
    alert('Я таких значений не знаю')
}

Если оператор break отсутствует, то выполнение продолжается дальше.

Например, предыдущий пример без break:

Пример: switch без break
Выделить все
var a = 2+2
switch (a) {
  case 3:
    alert('Маловато')
  case 4:
    alert('В точку!')
  case 5:
    alert('Перебор')
  default:
    alert('Я таких значений не знаю')
}

При a=4 последовательно будут выполнены операторы:

Выделить все
alert('В точку!')
 
alert('Перебор')
 
alert('Я таких значений не знаю')

Несколько значений case можно группировать.

Пример: группировка case
Выделить все
var a = 2+2
switch (a) {
  case 4:
    alert('Верно!')
    break
  case 3:
  case 5:
    alert('Неверно!')
    break
  default:
    alert('Я таких значений не знаю')
}