Como você usaria a switch
case
quando 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
case
quando 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 switch
executa, localiza a primeira case
instrução correspondente e, em seguida, executa cada linha de código após a opção até atingir uma break
instrução ou o final da switch
(ou uma return
instrução para deixar toda a função que contém). Quando você omite deliberadamente o break
código para que o código abaixo case
seja 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 break
instruções é um erro de codificação bastante comum e é a primeira coisa que você deve procurar se switch
nã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 default
caso, que será executado se nenhum dos outros casos corresponder - se você não incluir um default
e nenhum caso corresponder, nada acontecerá. Você pode (opcionalmente) passar para o caso padrão.
Portanto, no meu segundo exemplo, se someVar
for 1, ele chamaria someFunction()
e você veria quatro alertas, uma vez que ocorre em vários casos, alguns dos quais com alertas. É someVar
3, 4 ou 5, você verá dois alertas. Se someVar
for 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 switch
e 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");
}