Ответ 1
Вы можете использовать провал:
switch (pageid)
{
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Как бы вы использовали случай переключения, если вам нужно проверить "a" или "b" в том же случае?
switch (pageid)
{
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Вы можете использовать провал:
switch (pageid)
{
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Поскольку другие ответы объясняют, как это сделать, не объясняя, почему это работает:
Когда выполняется switch
, он находит первый соответствующий оператор case
, а затем выполняет каждую строку кода после переключения до тех пор, пока он не обратится к оператору break
или концу switch
(или return
, чтобы оставить всю содержащую функцию). Когда вы намеренно опускаете break
, чтобы код под следующим case
выполнялся также, который вызывал провал. Поэтому для требования OP:
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 или любое другое значение, вы увидите "Конец".
Вам нужно сделать две метки case
.
Контроль будет проходить от первой метки до второй, поэтому они оба будут выполнять один и тот же код.
Вы должны переключить его!
switch (true) {
case ( (pageid === "listing-page") || (pageid === ("home-page") ):
alert("hello");
break;
case (pageid === "details-page"):
alert("goodbye");
break;
}
Забудьте switch
и break
, давайте поиграем с if
. И вместо утверждения
if(pageid === "listing-page" || pageid === "home-page")
позволяет создавать несколько массивов в случаях и проверять их с помощью Array.prototype.includes()
var caseA = ["listing-page", "home-page"];
var caseB = ["details-page", "case04", "case05"];
if(caseA.includes(pageid)) {
alert("hello");
}
else if (caseB.includes(pageid)) {
alert("goodbye");
}
else {
alert("there is no else case");
}
Используйте запятые для разделения случая
switch (pageid)
{
case "listing-page","home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}