Can I handle an "undefined" case in a switch statement in JavaScript?
Solution 1:
Add a case
for undefined
.
case undefined:
// code
break;
Or, if all other options are exhausted, use the default
.
default:
// code
break;
Note: To avoid errors, the variable supplied to switch
has to be declared but can have an undefined
value. Reference this fiddle and read more about defined and undefined variables in JavaScript.
Solution 2:
Well, the most portable way would be to define a new variable undefined
in your closure, that way you can completely avoid the case when someone does undefined = 1;
somewhere in the code base (as a global var), which would completely bork most of the implementations here.
(function() {
var foo;
var undefined;
switch (foo) {
case 1:
//something
break;
case 2:
//something
break;
case undefined:
// Something else!
break;
default:
// Default condition
}
})();
By explicitly declaring the variable, you prevent integration issues where you depend upon the global state of the undefined
variable...
Solution 3:
If you're comparing object references, but the variable may not be assigned a value, it'll work like any other case to simply use undefined
.
var obs = [
{},
{}
];
var ob = obs[~~(Math.random() * (obs.length + 1))];
switch(ob) {
case obs[0]:
alert(0);
break;
case obs[1]:
alert(1);
break;
case undefined:
alert("Undefined");
break;
default: alert("some unknown value");
}