JavaScript: a variável está definida?

Às vezes, você pode querer verificar se uma variável já está definida, por exemplo, para não substituir as definições feitas por outros scripts. No entanto, existem muitas maneiras de verificar se uma variável está ou não definida em JavaScript. Aqui, vou tentar cobrir alguns deles.

O primeiro é verificar se o valor da variável é idêntico a undefined:

var x; // x is declarated, but doesn't has a value i.e. undefined
if (x === undefined) { // True
// x is undefined
}

Essa abordagem só funciona se a variável for, pelo menos, declarada. Se não for, um ReferenceErroracontece. Para evitar isso, use typeof:

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

Outra forma de verificar se uma variável é declarada é verificar o escopo ou, se a variável for global, o objeto global .

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
// ...
}
}

Por último this, no âmbito global, na maioria dos navegadores, é igual ao windowobjeto.

Fontes:

Mozilla Developer Network – Indefinido

Stack Overflow