Умовна конструкція switch..case в JavaScript
Конструкція switch..case є альтернативою використанню конструкції if..else
і також дає змогу обробити одразу кілька умов:
const income = 200;
switch(income){
case
100 :
console.log("Дохід дорівнює 100");
break;
case
200 :
console.log("Дохід дорівнює 200");
break;
case
500 :
console.log("Дохід дорівнює 500");
break;
}
Після ключового слова switch у дужках йде порівнюваний вираз. Значення цього виразу послідовно порівнюється зі значеннями, поміщеними після оператора сase. І якщо збіг буде знайдено, то буде виконуватися певний блок сase.
Наприкінці кожного блоку сase ставиться оператор break, щоб уникнути виконання інших блоків. У цьому випадку константа income дорівнює 200, тому буде виконуватися блок
case
200 :
console.log("Дохід дорівнює 200");
break;
Оператор break
Оператор break служить для того, щоб уникнути виконання інших умов. Наприклад, ми могли б написати:
let income = 200;
switch(income){
case
100 :
console.log("Дохід дорівнює 100");
income +=100;
break;
case
200 :
console.log("Дохід дорівнює 200");
income +=100;
break;
case
500 :
console.log("Дохід дорівнює 500");
income +=100;
// break; // тут сенсу в break немає, оскільки останній блок
}
Тут знову income дорівнює 200 і знову буде виконуватися блок
case
200 :
console.log("Дохід дорівнює 200");
income +=100;
break;
Завдяки оператору break
після виконання блоку відбудеться вихід із конструкції switch, і жодні інші блоки case не будуть виконуватися.
Але тепер приберемо оператор break:
let income = 200;
switch(income){
case
100 :
console.log("Дохід дорівнює 100");
income +=100;
case
200 :
console.log("Дохід дорівнює 200");
income +=100;
case
500 :
console.log("Дохід дорівнює 500");
income +=100;
}
console.log("Фінальний дохід дорівнює", income);
Результат виконання:
Дохід дорівнює 200 Дохід дорівнює 500 Фінальний дохід дорівнює 400
Тут спочатку змінна income знову дорівнює 200, відповідно буде виконуватися блок
case
200 :
console.log("Дохід дорівнює 200");
income +=100;
Значення income збільшується на 100, однак наприкінці блоку немає оператора break, тож керування перейде до перевірки умови в наступний блок:
case
500 :
console.log("Дохід дорівнює 500");
income +=100;
І не важливо, що income не дорівнює 500 (а лише 300 на даний момент), цей блок також буде виконуватися.
Об'єднання умов
Однак за необхідності можна відразу обробити кілька умов:
const income = 200;
switch(income){
case
100 :
case
200 :
console.log("Дохід дорівнює 100 або 200");
break;
case
500 :
console.log("Дохід дорівнює 500");
break;
}
У цьому випадку для умови, коли income дорівнює 100 і 200, виконуються одні й ті самі дії.
Умова за замовчуванням - default
Якщо ми хочемо також обробити ситуацію, коли збігу не буде знайдено, то можна додати необов'язковий блок default:
const income = 700;
switch(income){
case
100 :
console.log("Дохід дорівнює 100");
break;
case
200 :
console.log("Дохід дорівнює 200");
break;
case
500 :
console.log("Дохід дорівнює 500");
break;
default:
console.log("Дохід невідомої величини");
break;
}