Конструкция switch
заменяет собой сразу несколько if
.
Она представляет собой более наглядный способ сравнить выражение сразу с несколькими вариантами.
Выглядит она так:
x
проверяется на строгое равенство первому значению value1
, затем второму value2
и так далее.case
и далее, до ближайшего break
(или до конца switch
).case
не совпал – выполняется (если есть) вариант default
.При этом case
называют вариантами switch
.
Пример использования switch
(сработавший код выделен):
Здесь оператор switch
последовательно сравнит a
со всеми вариантами из case
.
Сначала 3
, затем – так как нет совпадения – 4
. Совпадение найдено, будет выполнен этот вариант, со строки alert('В точку!')
и далее, до ближайшего break
, который прервёт выполнение.
Если break
нет, то выполнение пойдёт ниже по следующим case
, при этом остальные проверки игнорируются.
Пример без break
:
В примере выше последовательно выполнятся три alert
:
В case
могут быть любые выражения, в том числе включающие в себя переменные и функции.
Например:
Несколько значений case можно группировать.
В примере ниже case 3
и case 5
выполняют один и тот же код:
При case 3
выполнение идёт со строки (*)
, при case 5
– со строки (**)
.
Следующий пример принимает значение от посетителя.
Что оно выведет при вводе числа 0? Числа 1? 2? 3?
Подумайте, выпишите свои ответы, исходя из текущего понимания работы switch
и потом читайте дальше…
0
выполнится первый alert
, далее выполнение продолжится вниз до первого break
и выведет второй alert('Два')
. Итого, два вывода alert
.1
произойдёт то же самое.2
, switch
перейдет к case '2'
, и сработает единственный alert('Два')
.3
, switch
перейдет на default
. Это потому, что prompt
возвращает строку '3'
, а не число. Типы разные. Оператор switch
предполагает строгое равенство ===
, так что совпадения не будет.