aunque no es un poco posible realmente no tiene mucho sentido hacerlo asi. explico usando tu ejemplo...
Código:
var numero = 5;
switch(numero){
case numero >= 0 && numero <= 10:
alert("0-10"); break;
case numero > 10:
alert("10 >"); break;
default:
alert("default case");
}
lo que realmente sucede en este codigo es que las expresiones de
case se tienen que evaluar primero y luego el valor devuelto es comparado con la expresion de
switch. o sea, segun este ejemplo la expresion
numero >= 0 && numero <= 10 evalua a
true porque 5 esta en rango de modo que el codigo se simplifica a:
Código:
var numero = 5;
switch(numero){
case true: // numero >= 0 && numero <= 10
alert("0-10"); break;
case false: // numero > 10, 5 no es mayor que 10
alert("10 >"); break;
default:
alert("default case");
}
finalmente se procede a comparar la expresion de
switch con los
case, y como veras,
numero no evalua igual a
true ni
false y por ende entra a
default.
como dato adicional por si se te ocurre hacerlo asi, ¿que tal si en lugar de poner la expresion en un
case lo ponemos en
switch? o sea,
Código:
var numero = 5;
switch(numero >= 0 && numero <= 10){
...
default:
alert("default case");
}
en mi opinion, aunque es valido, tampoco tendria mucho sentido emplear
switch/case porque es practicamente lo mismo que un
if/else. la expresion de
switch evalua a un boolean, lo cual, como maximo puedes tener dos
case para los posibles valores que son: true y false.