Лекция
Привет, сегодня поговорим про конструкция switch, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое конструкция switch , настоятельно рекомендую прочитать все из категории Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend).
case
Конструкция switch
заменяет собой сразу несколько if
.
Это — более наглядный способ сравнить выражение сразу с несколькими вариантами.
Выглядит она так:
01 |
switch (x) { |
02 |
case 'value1' : // if (x === 'value1') |
03 |
... |
04 |
[ break ] |
05 |
06 |
case 'value2' : // if (x === 'value2') |
07 |
... |
08 |
[ break ] |
09 |
10 |
default : |
11 |
... |
12 |
[ break ] |
13 |
} |
x
проверяется на строгое равенство первому значению value1
, затем второмуvalue2
и так далее.case
и далее, до ближайшего break
(или до конца switch
).
При этом case
называют вариантами switch
.
case
не совпал — выполняетcя (если есть) вариант default
.Пример использования switch
(сработавший код выделен):
01 |
var a = 2+2; |
02 |
03 |
switch (a) { |
04 |
case 3: |
05 |
alert( 'Маловато' ); |
06 |
break ; |
07 |
case 4: |
08 |
alert( 'В точку!' ); |
09 |
break ; |
10 |
case 5: |
11 |
alert( 'Перебор' ); |
12 |
break ; |
13 |
default : |
14 |
alert( 'Я таких значений не знаю' ); |
15 |
} |
Будет выведено только одно значение, соответствующее 4
. После чего break
прервет выполнение.
Если его не прервать — оно пойдет далее, при этом остальные проверки игнорируются.
Например:
01 |
var a = 2+2; |
02 |
03 |
switch (a) { |
04 |
case 3: |
05 |
alert( 'Маловато' ); |
06 |
case 4: |
07 |
alert( 'В точку!' ); |
08 |
case 5: |
09 |
alert( 'Перебор' ); |
10 |
default : |
11 |
alert( 'Я таких значений не знаю' ); |
12 |
} |
В примере выше последовательно выполнятся три alert
.
alert( 'В точку!' ); |
alert( 'Перебор' ); |
alert( 'Я таких значений не знаю' ); |
В case
могут быть любые выражения, в том числе включающие в себя переменные и функции.
Например:
01 |
var a = 1; |
02 |
var b = 0; |
03 |
04 |
switch (a) { |
05 |
case b+1: |
06 |
alert(1); |
07 |
break ; |
08 |
09 |
default : |
10 |
alert( 'нет-нет, выполнится вариант выше' ) |
11 |
} |
case
Несколько значений case можно группировать.
В примере ниже case 3
и case 5
выполняют один и тот же код:
01 |
var a = 2+2; |
02 |
03 |
switch (a) { |
04 |
case 4: |
05 |
alert( 'Верно!' ); |
06 |
break ; |
07 |
08 |
case 3: // (*) |
09 |
case 5: // (**) |
10 |
alert( 'Неверно!' ); |
11 |
break ; |
12 |
13 |
default : |
14 |
alert( 'Я таких значений не знаю' ); |
15 |
} |
При case 3
выполнение идет со строки (3)
и идет вниз до ближайшего break
, таким образом проходя и то, что предназначено для case 5
.
Следующий пример принимает значение от посетителя.
01 |
var arg = prompt( "Введите arg?" ) |
02 |
switch (arg) { |
03 |
case '0' : |
04 |
case '1' : |
05 |
alert( 'Один или ноль' ); |
06 |
07 |
case '2' : |
08 |
alert( 'Два' ); |
09 |
break ; |
10 |
11 |
case 3: |
12 |
alert( 'Никогда не выполнится' ); |
13 |
14 |
case null : |
15 |
alert( 'Отмена' ); |
16 |
break ; |
17 |
18 |
default : |
19 |
alert( 'Неизвестное значение: ' + arg) |
20 |
} |
Что оно выведет при вводе чисел 0, 1, 2, 3? Подумайте и потом читайте дальше…
0
или 1
выполнится первый alert
, далее выполнение продолжится вниз до первогоbreak
и выведет второй alert('Два')
.2
, switch
перейдет к case '2'
и выведет Два
.3
, switch
перейдет на default
. Это потому, что prompt
возвращает строку '3'
, а не число. Об этом говорит сайт https://intellect.icu . Типы разные. Switch
использует строгое равенство ===
, так что совпадения не будет.case null
.
К сожалению, в одной статье не просто дать все знания про конструкция switch. Но я - старался. Если ты проявишь интерес к раскрытию подробностей,я обязательно напишу продолжение! Надеюсь, что теперь ты понял что такое конструкция switch и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend)
Из статьи мы узнали кратко, но содержательно про конструкция switch
Комментарии
Оставить комментарий
Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend)
Термины: Выполнение скриптов на стороне клиента JavaScript, jqvery, JS фреймворки (Frontend)