Cómo verificar una variable no definida en JavaScript

Resuelto Jineesh asked hace 15 años • 15 respuestas

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?

Jineesh avatar May 13 '09 21:05 Jineesh
Aceptado

En JavaScript, nulles un objeto. Hay otro valor para las cosas que no existen undefined. El DOM regresa nullen casi todos los casos en los que no puede encontrar alguna estructura en el documento, pero en JavaScript sí undefinedes 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 typeoftratará una variable no declarada y una variable declarada con el valor de undefinedcomo equivalentes.

Pero, para comprobar si una variable está declarada y no undefined:

if (yourvar !== undefined) // Any scope

Anteriormente, era necesario utilizar el typeofoperador para comprobar si había indefinido de forma segura, porque era posible reasignar undefinedcomo una variable. La forma antigua era así:

if (typeof yourvar !== 'undefined') // Any scope

El problema de undefinedla reasignación se solucionó en ECMAScript 5, que se lanzó en 2009. Ahora puede usar ===y !==probar de forma segura undefinedsin usarlo typeof, ya que undefinedha 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

Natrium avatar May 13 '2009 14:05 Natrium

La única forma de probar realmente si una variable lo es undefinedes 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).

Michael Wales avatar May 13 '2009 14:05 Michael Wales

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.

Jason S avatar May 13 '2009 14:05 Jason S

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.
}
Dmitri Farkov avatar May 13 '2009 14:05 Dmitri Farkov

Perdón por la nigromancia, pero la mayoría de las respuestas aquí confunden 'indefinido' y 'no definido'

  1. Indefinido : se declara una variable pero su valor no está definido.

  2. No definido : una variable ni siquiera está declarada.

La única forma segura de comprobar ambos casos es utilizartypeof myVar === 'undefined'

myVar === undefinedsólo comprobará el número de caso (1). Aún arrojará "myVar no está definido" para el caso número (2) si myVarni 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.

Alex from Jitbit avatar Nov 12 '2021 09:11 Alex from Jitbit