JavaScript conditional switch statement
Is there a way to write a conditional switch statement in JavaScript?
I'm guessing not, since the following is always going to default
:
var raw_value = 11.0;
switch(raw_value)
{
case (raw_value > 10.0):
height = 48;
width = 36;
break;
case (raw_value > 5.0):
height = 40;
width = 30;
break;
default:
height = 16;
width = 12;
break;
}
If not, what should I use instead - a long if/else statement?
thanks :)
Solution 1:
Like this:
var raw_value = 11.0;
switch(true) {
case (raw_value > 10.0):
height = 48;
width = 36;
break;
case (raw_value > 5.0):
height = 40;
width = 30;
break;
default:
height = 16;
width = 12;
}
The expressions in the case
statements will evaluate to true
or false
, and if that matches the switch
condition... voilà. The default
acts like an else
.
Bonus: you can invert the whole logic by simply replacing true
with false
. With if ... else if
statements, you'd have to edit every if-clause individually.
Solution 2:
In a switch
statement, the evaluated value of the switch
expression is compared the the evaluated values of the cases. So here the value of raw_value
(number) is compared to raw_value > 10.0
(comparison expression) and raw_value > 5.0
(comparison expression).
So unless one of your case expressions yield a number equal to 11.0
or you use the switch
expression true
, you will always get the default case.
Just use a simple if
/else
instead:
var raw_value = 11.0;
if (raw_value > 10.0) {
height = 48;
width = 36;
} else if (raw_value > 5.0) {
height = 40;
width = 30;
} else {
height = 16;
width = 12;
}