Перейти до основного вмісту

Інструкція switch

У деяких випадках незручність читання складних розгалужень if...else можна уникнути, використовуючи «плоскіший» синтаксис інструкції розгалуження switch.

Межі застосування switch обмежені задачами з одним загальним запитанням (що порівнювати) і рядом варіантів відповідей (з чим порівнювати).

Інструкція switch

Його синтаксис складається із блоку switch(значення) - що потрібно порівняти і набору окремих випадків case значення - з чим потрібно порівняти. Для порівняння використовується оператор строгої рівності ===. Тобто, не можна порівняти більше або менше, лише рівність.

switch (значення) {
case значення:
інструкції;
break;

case значення:
інструкції;
break;

default:
інструкції;
}

Значення в блоці switch(значення) - рядок або число, яке порівнюється щодо строгої рівності з усіма значеннями в блоках case значення по черзі, зверху вниз.

Оператор break в кінці кожного блоку case необхідний, щоб перервати подальші перевірки і одразу перейти до коду за switch у тому випадку, коли перевірка рівності повернула true.

Якщо жодного збігу значень не відбулося, необхідно виконати код за замовчуванням, як і в блоці else для інструкції if...else. Для цього, після усіх блоків case додається блок default. Оператор break після блоку default не потрібен, тому що це вже остання операція, яка буде виконана в switch і управління буде передано коду після нього.

let cost;
const subscription = "premium";

switch (subscription) {
case "free":
cost = 0;
break;

case "pro":
cost = 100;
break;

case "premium":
cost = 500;
break;

default:
console.log("Invalid subscription type");
}

console.log(cost); // 500
Цікаво

Якщо оператор break відсутній, то після того як виконається будь-яка умова case, усі наступні за ним блоки коду будуть виконуватися один за одним, що може призвести до небажаних наслідків у випадку неправильного застосування.