Інструкція switch
У деяких випадках незручність читання складних розгалужень if...else можна уникнути, використовуючи «плоскіший» синтаксис інструкції розгалуження 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, усі наступні за ним блоки коду будуть виконуватися один за одним, що може призвести до небажаних наслідків у випадку неправильного застосування.