Как бы вы использовали 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()а затем вы увидите четыре предупреждения, поскольку оно проходит через несколько случаев, некоторые из которых имеют предупреждения под ними. Это someVar3, 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");
}