Expresión dentro de la declaración de caso de cambio
Estoy intentando crear una declaración de cambio, pero parece que no puedo usar una expresión que se evalúe (en lugar de una cadena/número entero establecido). Puedo hacer esto fácilmente con declaraciones if, pero espero que el caso sea más rápido.
Estoy intentando lo siguiente
function reward(amount) {
var $reward = $("#reward");
switch (amount) {
case (amount >= 7500 && amount < 10000):
$reward.text("Play Station 3");
break;
case (amount >= 10000 && amount < 15000):
$reward.text("XBOX 360");
break;
case (amount >= 15000):
$reward.text("iMac");
break;
default:
$reward.text("No reward");
break;
}
}
¿Me estoy perdiendo algo obvio o no es posible? Google no ha sido amigable en este caso.
Se agradece cualquier ayuda/consejos.
METRO
amount
es un número, pero las expresiones en las case
cláusulas solo se evalúan como booleanas; los valores nunca coincidirán.
siempre podrías hacer
switch (true) {
case (amount >= 7500 && amount < 10000):
// Code
break;
case (amount >= 10000 && amount < 15000):
// Code
break;
// etc.
}
Funciona porque el valor que se compara ahora es booleano , por lo que se ejecutará true
el código bajo la primera case
cláusula con una expresión que se evalúa .true
Supongo que es un poco “complicado”, pero no veo nada malo en usarlo. Una declaración simple if
probablemente else
sería más concisa y no tendría que preocuparse por errores accidentales. Pero ahí está de todos modos.
Un bloque no switch
funciona así. Se case
utiliza para contener un valor único que si es igual al valor en la switch
línea. if-else
Las declaraciones le serán de gran utilidad.
Aquí hay información sobre el switch
bloque.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch