Інструкція 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
, усі наступні за ним блоки коду будуть виконуватися один за одним, що може призвести до небажаних наслідків у випадку неправильного застосування.