Оскільки в інших відповідях було пояснено, як це зробити, фактично не пояснюючи, чому це працює:
Коли switchвиконується, він знаходить перше відповідне caseвисловлювання, а потім виконує кожен рядок коду після комутатора, поки він не потрапить або в breakоператор, або в кінець switch(або у returnзаяві, щоб залишити всю функцію, що містить). Коли ви навмисно опускаєте breakтак, що код під наступним також caseвиконується, що називається прохідним . Отже, для вимоги ОП:
switch (pageid) {
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Забути включення breakвисловлювань - досить поширена помилка кодування, і це перше, на що слід звернути увагу, якщо ваша switchробота не працює так, як ви очікували. З цієї причини деякі люди люблять ставити коментар, щоб сказати "провалитися", щоб зрозуміти, коли заяви про перерви були спеціально пропущені. Я роблю це в наступному прикладі, оскільки це трохи складніше і показує, як деякі випадки можуть включати код, який потрібно виконати до їх пропускання:
switch (someVar) {
case 1:
someFunction();
alert("It was 1");
// fall through
case 2:
alert("The 2 case");
// fall through
case 3:
// fall through
case 4:
// fall through
case 5:
alert("The 5 case");
// fall through
case 6:
alert("The 6 case");
break;
case 7:
alert("Something else");
break;
case 8:
// fall through
default:
alert("The end");
break;
}
Ви також можете (необов'язково) включити defaultсправу, яка буде виконана, якщо жодна з інших справ не збігається - якщо ви не включитеdefault та жодні випадки, то нічого не відбувається. Ви можете (за бажанням) перейти до випадку за замовчуванням.
Отже, у моєму другому прикладі, якщо someVarце 1, він би зателефонував, someFunction()і тоді ви побачите чотири сповіщення, як це потрапляє через кілька випадків, у деяких з яких є сповіщення під ними. Якщо someVarце 3, 4 або 5, ви побачили б два сповіщення. Якщо someVarце 7, ви побачите "Щось інше", а якщо це 8 або будь-яке інше значення, ви побачите "Кінець".