Cómo verificar una variable no definida en JavaScript
Quería comprobar si la variable está definida o no. Por ejemplo, lo siguiente arroja un error no definido
alert( x );
¿Cómo puedo detectar este error?
En JavaScript, null
es un objeto. Hay otro valor para las cosas que no existen undefined
. El DOM regresa null
en casi todos los casos en los que no puede encontrar alguna estructura en el documento, pero en JavaScript sí undefined
es el valor utilizado.
En segundo lugar, no, no existe un equivalente directo. Si realmente desea verificar específicamente para null
, haga:
if (yourvar === null) // Does not execute if yourvar is `undefined`
Si desea verificar si existe una variable, solo puede hacerlo con try
/ catch
, ya que typeof
tratará una variable no declarada y una variable declarada con el valor de undefined
como equivalentes.
Pero, para comprobar si una variable está declarada y no undefined
:
if (yourvar !== undefined) // Any scope
Anteriormente, era necesario utilizar el typeof
operador para comprobar si había indefinido de forma segura, porque era posible reasignar undefined
como una variable. La forma antigua era así:
if (typeof yourvar !== 'undefined') // Any scope
El problema de undefined
la reasignación se solucionó en ECMAScript 5, que se lanzó en 2009. Ahora puede usar ===
y !==
probar de forma segura undefined
sin usarlo typeof
, ya que undefined
ha sido de solo lectura durante algún tiempo.
Si desea saber si un miembro existe de forma independiente pero no le importa cuál es su valor:
if ('membername' in object) // With inheritance
if (object.hasOwnProperty('membername')) // Without inheritance
Si quieres saber si una variable es verdadera :
if (yourvar)
Fuente
La única forma de probar realmente si una variable lo es undefined
es hacer lo siguiente. Recuerde, indefinido es un objeto en JavaScript.
if (typeof someVar === 'undefined') {
// Your variable is undefined
}
Algunas de las otras soluciones en este hilo le harán creer que una variable no está definida aunque haya sido definida (con un valor NULL o 0, por ejemplo).
Técnicamente, la solución adecuada es (creo):
typeof x === "undefined"
A veces puedes volverte perezoso y usar
x == null
pero eso permite que tanto una variable x indefinida como una variable x que contenga nulo devuelvan verdadero.
Una versión aún más sencilla y abreviada sería:
if (!x) {
//Undefined
}
O
if (typeof x !== "undefined") {
//Do something since x is defined.
}
Perdón por la nigromancia, pero la mayoría de las respuestas aquí confunden 'indefinido' y 'no definido'
Indefinido : se declara una variable pero su valor no está definido.
No definido : una variable ni siquiera está declarada.
La única forma segura de comprobar ambos casos es utilizartypeof myVar === 'undefined'
myVar === undefined
sólo comprobará el número de caso (1). Aún arrojará "myVar no está definido" para el caso número (2) si myVar
ni siquiera está declarado. El OP pregunta específicamente sobre el caso "ni siquiera definido" (2).
PD: Entiendo que el "caso 2" se está volviendo raro en el mundo ES6 moderno, pero algunos componentes antiguos aún viven en el pasado.