switch case в JavaScript
switch - это конструкция, которая позволяет выполнять инструкции исходя из значения выражений. switch является более наглядным способом сравнить выражение с несколькими вариантами описанными внутри, таким образом заменяя сразу же несколько if.
Синтаксис switch
switch (выражение) {
case value1: // если (выражение === value1)
инструкция
break;
case value2: // если (выражение === value2)
инструкция
break;
case value3: // если (выражение === value3)
инструкция
break;
default:
инструкция
break;
}
выражение - значение, которое сравнивается с value1, value2, value3 и т.д.
инструкция - код который выполнится, если выражение соответствует valueN.
break - команда отвечающая на выход из конструкции switch.
default - необязательный блок, который выполняется, если выражение не соответствует ни одному valueN.
Конструкция switch может иметь один или более блоков case.
Пример №1
let a = 1 + 2;
switch (a) {
case 1:
alert('a = 1');
break;
case 2:
alert('a = 2');
break;
case 3:
alert('a = 3');
break;
default:
alert("a > 3");
}
В данном примере а равно 3 и switch по порядку сравнивает это значение с вариантами из case. Пропустив case 1 и case 2, switch остановится на case 3 и выполнит alert( ‘a = 3’ ). break в свою очередь закончит выполнение потока кода в конструкции. Если бы a не равнялось 1, 2 или 3, тогда выполнился бы код из default.
Пример №2
Если не использовать break тогда выполнение кода пойдет дальше и будут выполнены инструкции в case и default расположенные ниже - проверки в свою очередь будут проигнорированы.
let a = 3 - 2;
switch (a) {
case 1:
alert('a = 1');
case 2:
alert('a = 2');
case 3:
alert('a = 3');
default:
alert("a > 3");
}
В данном случае в console будет выведено:
a = 1
a = 2
a = 3
a > 3
Пример №3
В switch и case значения могут быть выражены по разному.
let a = 3 - 1;
let b = 0;
switch (++a) {
case b + 1:
alert('a = 1');
break;
case b + 2:
alert('a = 2');
break;
case b + 3:
alert('a = 3');
break;
default:
alert("a > 3");
}
Здесь в switch выражение принимает значение 3, что соответствует b + 3, таким образом будет выполнено alert(‘a = 3’).
Группировка case
Благодаря тому, что break является прямым указанием на выход из switch и без него выполнение кода идет дальше, появляется возможность построения цепочек case, которые используют один и тот же код (инструкцию).
Пример №4
let a = 3 + 5
switch (a) {
case 2:
case 4:
case 6:
case 8:
case 10:
alert( 'a четное число' );
break;
case 1:
case 3:
case 5:
case 7:
case 9:
alert( 'a нечетное число' );
break;
default:
alert( "a > 10" );
}
Проверка равенства в switch
Проверка соответствия выражения и valueN происходит по правилам строгого равенства (===) - значения должны быть одного типа.
Пример №5
let a = prompt("Введите число от 1 до 6");
switch (a) {
case '2':
case '4':
case '6':
alert('a четное число');
break;
case 1:
case 3:
case 5:
alert('a нечетное число');
break;
default:
alert("Выполнился код в default");
}
Информация указанная в поле для ввода имеет тип данных строка, поэтому при вводе 2, 4, 6 выполниться alert(‘a четное число’), так как в case ‘2’, ‘4’ и ‘6’ приведены в формату строки.
При вводе 1, 3, 5, выполниться default, так как в case 1, 3, 5 имеет формат число.
Итого
Конструкция switch сравнивает начальное выражение со случаями описанными внутри и исходя из этого выполняет нужный код. switch имеет в своем арсенале необязательные директивы break и default, что расширяет ее функционал и позволяет создавать цепочки case, а также задавать инструкции в том случае, если выражение не соответствует ни одному case.