JavaScript: Is the variable defined?

Sometimes, you may want to check if a variable is already defined e.g. to not override definitions made by other scripts. However, there are many ways to check if a variable is or isn’t defined in JavaScript. Here, I’ll try to cover some of them.

The first one is checking if the value of the variable is identical to undefined:

var x; // x is declarated, but doesn't has a value i.e. undefined

if (x === undefined) { // True
// x is undefined
}

This approach only works if the variable is, at least, declarated. If it isn’t, aReferenceError happens. To avoid this, use typeof:

var x;
if (typeof x === "undefined") {
// True
// ...
} if (typeof y === "undefined") {
// True, with y not declarated.
// ...
}

Another way to check if a variable is declarated is to check on the scope, or, if the variable is global, on the global object.

var x;
if ("x" in this) {
// True
// ...
}
if ("y" in this) {
// Nope, but look, no error
// ...
}
var Klazz = function() {
this.something = 0;
if ("something" in this) {
// Also true
// ...
}
}

As a last note, this, in the global scope, on most browsers, is the same as the windowobject.