Yes, you have to use individual, complete switch
es:
switch (Middle) {
case true:
switch (Direction) {
case 'left':
//code block
break;
case 'right':
//code block
break;
}
break;
case false:
switch (Direction) {
case 'left':
//code block
break;
case 'right':
//code block
break;
}
break;
default:
//code block
}
Note that in the above, if Direction
isn't 'left'
or 'right'
but Middle
is true
or false
(which, if it's really a boolean, it must be), then no default code is run as the subordinate switches don't have defaults.
Alternately, you might combine Middle
and Direction
, which makes it easier to use a default for non-matching cases:
switch (Middle+'|'+Direction) {
case 'true|left':
//code block
break;
case 'true|right':
//code block
break;
case 'false|left':
//code block
break;
case 'false|right':
//code block
break;
default:
//code block
}
Or look at a dispatch object:
var actions = {
"true|left": function() {
// code for Middle = true, Direction = left
},
"true|right": function() {
// code for Middle = true, Direction = right
},
"false|left": function() {
// code for Middle = false, Direction = left
},
"false|right": function() {
// code for Middle = false, Direction = right
},
"default": function() {
// code for the default
}
};
(actions[Middle+"|"+Direction] || actions.default)();
...though in this specific case it doesn't buy you much of anything over a switch
.