Оператор switch в JavaScript и конструкции case

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

На практике вы часто используете оператор 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.
Рейтинг
( Пока оценок нет )
Александр Русаков / автор статьи
Программист, разработчик, 12 лет опыта работы в крупных компаниях. Быстро освоил typescript, делюсь своими знаниями на страницах этого сайта.
Загрузка ...
JavaScript и TypeScript