В этом руководстве вы узнаете, как использовать оператор 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
.