В этом руководстве вы узнаете, как использовать оператор switch в JavaScript для выполнения блока на основе нескольких условий и конструкции case.
Оператор switch в JavaScript оценивает expression, сравнивает его результат со значениями case и выполняет конструкции, связанные с соответствующим значением case.
Синтаксис:
switch (expression) {
case value1:
statement1;
break;
case value2:
statement2;
break;
case value3:
statement3;
break;
default:
statement;
}Как это работает:
- Сначала оцените
expressionв круглых скобках после ключевого словаswitch. - Во-вторых, сравните результат выражения со значениями
value1,value2, … вcaseветвления сверху вниз. Оператор использует строгое сравнение(===). - В-третьих, выполните оператор в ветви
case, где результатexpressionравен значению, следующему за ключевым словомcase. Операторbreakзавершает операторswitch. Если вы пропустите операторbreak, выполнение кода перейдет из исходной ветки в следующую. Если результатexpressionне равен строго какому-либо значению, оператор выполнитstatementв ветке поdefault.
Оператор не перестанет сравнивать результат expression с оставшимися значениями case, пока не найдет совпадение.
Оператор switch похож на оператор if…else…if. Но у него более читаемый синтаксис.
Следующая блок-схема иллюстрирует оператор switch :

На практике вы часто используете оператор switch вместо сложного оператора if...else...if, чтобы сделать код более читабельным.
Технически оператор switch эквивалентен оператору if...else...if :
if (expression === value1) {
statement1;
} else if (expression === value2) {
statement2;
} else if (expression === value3) {
statement3;
} else {
statement;
}Примеры использования
Давайте рассмотрим несколько примеров использования оператора switch в JavaScript.
1) Для получения дня недели
В следующем примере оператор switch используется для получения дня недели на основе календарного дня:
let day = 3;
let dayName;
switch (day) {
case 1:
dayName = 'Sunday';
break;
case 2:
dayName = 'Monday';
break;
case 3:
dayName = 'Tuesday';
break;
case 4:
dayName = 'Wednesday';
break;
case 5:
dayName = 'Thursday';
break;
case 6:
dayName = 'Friday';
break;
case 7:
dayName = 'Saturday';
break;
default:
dayName = 'Invalid day';
}
console.log(dayName); // TuesdayВыход:
Tuesday
Как это работает:
- Сначала объявите переменную дня, которая содержит число календарного дня и переменную имени дня (dayName).
- Во-вторых, получить день недели на основе числа с помощью оператора
switch. Если день равен1, день недели —Sunday. Если день равен2, день недели —Mondayи так далее. - В-третьих, выведите день недели в консоль.
2) Для получения количества дней на основе месяца
В следующем примере оператор switch используется для получения количества дней в месяце:
let year = 2016;
let month = 2;
let dayCount;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
dayCount = 31;
break;
case 4:
case 6:
case 9:
case 11:
dayCount = 30;
break;
case 2:
// leap year if((year % 4 == 0 && !(year % 100 == 0)) || year % 400 == 0) { dayCount = 29; } else { dayCount = 28; } break; default: dayCount = -1; // invalid month }
console.log(dayCount); // 29В этом примере у нас есть четыре случая:
- Если месяц равен 1, 3, 5, 7, 8, 10 или 12, количество дней в месяце равно 31.
- Если месяц равен 4, 6, 9 или 11, количество дней в этом месяце равно 30.
- Если месяц равен 2, а год не високосный, количество дней равно 28. Если год високосный, количество дней равно 29.
- Если месяц не находится в допустимом диапазоне (1-12), выполняется ветвь по
defaultи устанавливает для переменнойdayCountзначение -1, что указывает на недопустимый месяц.
Заключение
- Оператор оценивает выражение, сравнивает его результат со значениями
caseи выполняет операцию, связанную с соответствующим case. - Используйте оператор
switchвместо сложного оператора if…else…if, чтобы сделать код более удобным для чтения. - Оператор
switchв Javascript использует строгое сравнение (===) для сравненияexpressionсо значениямиcase.
