Como você usaria a switch casequando precisar testar a ou b no mesmo caso?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Como você usaria a switch casequando precisar testar a ou b no mesmo caso?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Respostas:
Você pode usar o fall-through:
switch (pageid)
{
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Como as outras respostas explicaram como fazê-lo sem realmente explicar por que funciona:
Quando o switchexecuta, localiza a primeira caseinstrução correspondente e, em seguida, executa cada linha de código após a opção até atingir uma breakinstrução ou o final da switch(ou uma returninstrução para deixar toda a função que contém). Quando você omite deliberadamente o breakcódigo para que o código abaixo caseseja executado também, isso é chamado de falha . Portanto, para a exigência do OP:
switch (pageid) {
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Esquecer de incluir breakinstruções é um erro de codificação bastante comum e é a primeira coisa que você deve procurar se switchnão estiver funcionando da maneira esperada. Por esse motivo, algumas pessoas gostam de colocar um comentário para dizer "falhar" para deixar claro quando as declarações de quebra foram omitidas de propósito. Eu faço isso no exemplo a seguir, pois é um pouco mais complicado e mostra como alguns casos podem incluir código a ser executado antes que eles caiam:
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;
}
Você também pode (opcionalmente) incluir um defaultcaso, que será executado se nenhum dos outros casos corresponder - se você não incluir um defaulte nenhum caso corresponder, nada acontecerá. Você pode (opcionalmente) passar para o caso padrão.
Portanto, no meu segundo exemplo, se someVarfor 1, ele chamaria someFunction()e você veria quatro alertas, uma vez que ocorre em vários casos, alguns dos quais com alertas. É someVar3, 4 ou 5, você verá dois alertas. Se someVarfor 7, você verá "Algo mais" e, se for 8 ou qualquer outro valor, verá "O fim".
Você tem que mudar isso!
switch (true) {
case ( (pageid === "listing-page") || (pageid === ("home-page") ):
alert("hello");
break;
case (pageid === "details-page"):
alert("goodbye");
break;
}
Esqueça switche break, vamos brincar if. E em vez de afirmar
if(pageid === "listing-page" || pageid === "home-page")
vamos criar várias matrizes com casos e verificá-lo com 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");
}