Инструкция switch в JavaScript

Инструкция switch используется для выбора одного из нескольких вариантов действий в зависимости от результата сравнения значения выражения с несколькими константами. Синтаксис инструкции switch выглядит следующим образом:

1
2
3
4
5
6
switch (выражение) {
  case константа: инструкции;
  ...
  case константа: инструкции;
  default: инструкции;
}

Инструкция switch сравнивает значение выражения, расположенного в круглых скобках, со всеми константами, стоящими рядом с ключевыми словами case, в порядке их следования. При сравнении используется оператор идентичности "===". Каждый из вариантов (блоков case) имеет метку в виде константного значения, за которым ставится двоеточие. Если одна из меток совпадает со значением выражения, то управление передаётся инструкциям, расположенным после этой метки. Блок defaultвыполняется в том случае, если не найдено ни одного соответствия с метками блоков case. Наличие блока default не обязательно, если его нет и не найдено ни одного соответствия, то никакие инструкции выполнены не будут:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var x = 3;
 
switch (x) {
  case 1:
    document.write("x равен 1");
    break;
  case 2:
    document.write("x равен 2");
    break;
  case 3:
    document.write("x равен 3");
    break;
  default:
    document.write("x > 3");
}

Данный код выводит на экран одно из четырёх сообщений в зависимости от того, какое число находится в переменной "x". На изображении ниже показан порядок выполнения инструкции switch:

порядок выполнения действий в инструкции switch

Инструкция break инициирует немедленный выход из инструкции switch, и далее управление передаётся инструкции, следующей за конструкцией switch.

При отсутствии инструкции break управление будет передано инструкциям, находящимся в других блоках case, т.е. после выполнения кода в блоке case продолжается выполнение кода следующего блока case и так до тех пор, пока не будет предпринята какая-нибудь операция для выхода из инструкции switch. Пример без инструкции break:

1
2
3
4
5
6
7
8
9
10
11
12
var x = 2;
 
switch (x) {
  case 1:
    document.write("x равен 1");
  case 2:
    document.write("x равен 2");
  case 3:
    document.write("x равен 3");
  default:
    document.write("x > 3");
}

Для выхода из switch может использоваться не только инструкция break, но также и инструкцияreturn (если switch находится внутри функции) или continue (если switch находится внутри цикла).

Достоинство в отсутствии инструкции break состоит в том, что несколько возможных вариантов case можно ассоциировать с одним и тем же набором выполняемых инструкций.

1
2
3
4
5
6
7
8
9
10
11
12
var x = 3;
 
switch (x) {
  case 1:
  case 2:
  case 3:
    document.write("x равен 1, 2 или 3");
    break;
  case 7:
    document.write("x равен 7");
    break;
}

Блоки case не обязательно должны записываться друг под другом, для удобства их можно расположить в ряд:

1

2

3

4

5

6

7

8

9

10

var x = 3;
 
switch (x) {
  case 1: case 2: case 3:
    document.write("x равен 1, 2 или 3");
    break;
  case 7:
    document.write("x равен 7");
    break;
}