¿Cómo utilizaría una switch casecuando se necesita prueba para una o B en el mismo caso?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
¿Cómo utilizaría una switch casecuando se necesita prueba para una o B en el mismo caso?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Respuestas:
Puede usar la caída:
switch (pageid)
{
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Como las otras respuestas explicaron cómo hacerlo sin explicar realmente por qué funciona:
Cuando se switchejecuta, encuentra la primera casedeclaración coincidente y luego ejecuta cada línea de código después del cambio hasta que llega a una breakdeclaración o al final de la switch(o una returndeclaración para dejar toda la función que contiene). Cuando omites deliberadamente el breakcódigo para que el siguiente casese ejecute también se llama falla . Entonces, para el requisito del OP:
switch (pageid) {
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
Olvidar incluir breakdeclaraciones es un error de codificación bastante común y es lo primero que debe buscar si switchno funciona de la manera esperada. Por esa razón, a algunas personas les gusta hacer un comentario para decir "no cumplir" para dejar en claro cuándo se han omitido intencionalmente las declaraciones de ruptura. Lo hago en el siguiente ejemplo, ya que es un poco más complicado y muestra cómo algunos casos pueden incluir código para ejecutar antes de caer:
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;
}
También puede (opcionalmente) incluir un defaultcaso, que se ejecutará si ninguno de los otros casos coincide: si no incluye un caso defaulty ninguno coincide, entonces no sucede nada. Puede (opcionalmente) pasar al caso predeterminado.
Entonces, en mi segundo ejemplo, si someVares 1, llamaría someFunction()y luego vería cuatro alertas, ya que cae en varios casos, algunos de los cuales tienen alertas debajo de ellos. Es someVar3, 4 o 5 verías dos alertas. Si someVares 7, vería "Algo más" y si es 8 o cualquier otro valor, vería "El final".
Tienes que cambiarlo!
switch (true) {
case ( (pageid === "listing-page") || (pageid === ("home-page") ):
alert("hello");
break;
case (pageid === "details-page"):
alert("goodbye");
break;
}
Olvídate switchy break, juguemos con if. Y en lugar de afirmar
if(pageid === "listing-page" || pageid === "home-page")
vamos a crear varias matrices con casos y verificarlo con 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");
}