JavaScript: switch
Инструкция switch была придумана в качестве альтернативы для нескольких if
. Обычно она используется когда нужно сравнить некоторое значение сразу с несколькими различными вариантами (другими значениями) и выполнить соответствующий фрагмент кода из предложенных вариантов.
Синтаксис switch
:
switch (выражение) { case выражение1: // Этот фрагмент кода выполнится, если вычисленное значение выражения в скобках // равно значению выражение1 break; ... case выражениеN: // Этот фрагмент кода выполнится, если вычисленное значение выражения в скобках // равно значению выражениеN break; default: // Этот фрагмент кода выполнится при отсутствии // совпадений со значениями представленных вариантов }
В круглых скобках, после ключевого слова switch
, указывается выражение, значение которого будет последовательно (сверху вниз) сравниваться со значениями выражений, указанных после ключевых слов case
. При сравнении значений используется оператор ===
.
Если соответствие значений установлено – switch
начинает выполняться от соответствующего case
и далее, пока не встретится инструкция break
(или до конца switch
, если break
отсутствует). Если соответствие значений не установлено – выполняется код, расположенный после ключевого слова default
.
case
и default
называют вариантами switch
.
Обратите внимание, что вариант default
, не является обязательным. При этом его можно располагать в любом месте в теле switch
, однако для удобства, его условились записывать последним.
Инструкция break
выполняет немедленный выход из инструкции switch
. Она может располагаться в каждом варианте, но не является обязательной. При отсутствии инструкции break
в каком-либо варианте управление будет передано инструкциям, относящимся к следующему варианту.
Пример работы инструкции switch
:
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"); }Попробовать »
На изображении ниже показан порядок выполнения:
Пример без инструкции break
:
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: " + x); }Попробовать »
Для выхода из switch
может использоваться не только инструкция break
, но также и инструкция return
(если switch
находится внутри функции) или continue
(если switch
находится внутри цикла).
Несколько вариантов можно ассоциировать с одним и тем же программным кодом:
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
не обязательно должны записываться друг под другом, для удобства их можно расположить в ряд:
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
позволяет писать такой код:
var num = 30; switch (true) { case num == 0: document.write("num: " + num); break; case num > 5 && num < 15: document.write("num между 5 и 15"); break; case num > 20: document.write("num: " + num); break; }
С этой темой смотрят: