Как бы вы использовали a, switch
case
когда вам нужно проверить a или b в одном и том же случае?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Как бы вы использовали a, switch
case
когда вам нужно проверить 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
выполнялся также код под следующим, который называется провалом . Итак, для требования ОП:
switch (pageid) {
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Забыть о включении break
операторов - довольно распространенная ошибка в кодировании, и вы должны прежде всего искать ее, если switch
она работает не так, как вы ожидали. По этой причине некоторые люди любят вставлять комментарий, чтобы сказать «провалиться», чтобы прояснить, когда операторы break были специально пропущены. Я делаю это в следующем примере, поскольку он немного сложнее и показывает, как некоторые случаи могут включать в себя код, выполняемый до того, как они провалится:
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 или любое другое значение, вы увидите «Конец».
Вы должны переключить это!
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.include ()
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");
}