2011-09-26 7 views
30

¿Hay alguna forma de asignar dos valores de caso diferentes al mismo bloque de código sin copiar y pegar? Por ejemplo, debajo de 68 y 40 debe ejecutar el mismo código, mientras que 30 no está relacionado.Declaración de cambio de Javascript: ¿Hay alguna manera de que dos casos ejecuten el mismo código?

case 68: 
    //Do something 
break; 

case 40: 
    //Do the same thing 
break; 

case 30: 
    //Do something different 
break; 

¿Es incorrecto pensar que algo así debería funcionar (aunque obviamente no es así)?

case 68 || 40: 
    //Do something 
break; 

case 30: 
    //Do something else 
break; 

Respuesta

98

Sólo hay que poner justo después de la otra sin interrupción

switch (myVar) { 
    case 68: 
    case 40: 
    // Do stuff 
    break; 

    case 30: 
    // Do stuff 
    break; 
} 
+0

Sonar encuentra esto como innapropiado, ¿otra opción? –

2
case 68: 
case 40: 
    // stuff 
    break; 
16

Sí, sólo hay que poner los relacionados case declaraciones lado de la otra, como este:

case 40: // Fallthrough 
case 68: 
    // Do something 
    break; 

case 30: 
    // Do something different 
    break; 

El comentario Fallthrough está allí por dos razones:

  • Se asegura a los lectores humanos que está haciendo esto deliberadamente
  • Silencia las advertencias de las herramientas tipo Lint que emiten advertencias sobre una posible caída accidental.
+1

Creo que se le olvidó algo. :) – BNL

+0

@BNL: ¡Ups! Ahora arreglado, gracias. – RichieHindle

0

Switch cases can be clubbed as shown in the dig.

Además, no se limita a sólo dos casos, se puede extender a cualquier no. de los casos.

+0

Si bien este enlace puede responder la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia – slfan

-3

que puedes usar:

switch condition { 
    case 1,2,3: 
    // do something 
    case 4,5: 
    // do something 
    default: 
    // do something 
} 

casos deben ser separados por comas.

+0

Esto simplemente es incorrecto. No puede tener múltiples valores en una caja de interruptor –

Cuestiones relacionadas