There are three ways to test whether a value is undefined:
Method 1: Use typeof:
if (typeof value === "undefined") {
// do something
}
Method 2: Compare it with the variable undefined:
if (value === undefined) {
// do something
}
Method 3: Compare it with void 0:
if (value === void 0) {
// do something
}
Q: Which one should you use?
A: There are many factors to consider:
- In terms of understandability
typeof and undefined are the best.
- In terms of minimum characters
undefined is the best when minified.
- In terms of performance (http://jsperf.com/type-of-undefined-vs-undefined):
- Both
undefined and void are at par in most browsers (notably Firefox and Chrome).
- In Chrome
typeof is slower than the other two but in Firefox it is the fastest.
- Using
typeof is the only way to test whether or not a variable exists.
Based on these factors I would say that undefined (method 2) is the best method. There's always the problem of undefined being overwritten. However if you're using the module pattern (which you should be doing in the browser) then you can get undefined for free:
(function ($, undefined) {
// you can use `undefined` safely here
}(jQuery));
Hence if you're using the module pattern then I would suggest you use the second method. It is readable, understandable and concise. The only disadvantage is that you won't be able to test whether or not a variable exists. However you can always fall back to typeof for that.
(window, document, RGraph, undefined)?undefined.