¿Cómo utilizaría una switch
case
cuando 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
case
cuando 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 switch
ejecuta, encuentra la primera case
declaración coincidente y luego ejecuta cada línea de código después del cambio hasta que llega a una break
declaración o al final de la switch
(o una return
declaración para dejar toda la función que contiene). Cuando omites deliberadamente el break
código para que el siguiente case
se 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 break
declaraciones es un error de codificación bastante común y es lo primero que debe buscar si switch
no 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 default
caso, que se ejecutará si ninguno de los otros casos coincide: si no incluye un caso default
y ninguno coincide, entonces no sucede nada. Puede (opcionalmente) pasar al caso predeterminado.
Entonces, en mi segundo ejemplo, si someVar
es 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 someVar
3, 4 o 5 verías dos alertas. Si someVar
es 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 switch
y 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");
}