Comprobar si el objeto existe en JavaScript

Resuelto Yarin asked hace 14 años • 20 respuestas

¿Cómo verifico la existencia de un objeto en JavaScript?

Las siguientes obras:

if (!null)
   alert("GOT HERE");

Pero esto arroja un error:

if (!maybeObject)
   alert("GOT HERE");

El error:

maybeObjectno está definido.

Yarin avatar Nov 16 '10 00:11 Yarin
Aceptado

Puede utilizar el typeofoperador de forma segura en variables no definidas.

Si se le ha asignado algún valor, incluido nulo, typeof devolverá algo distinto de indefinido. typeof siempre devuelve una cadena.

Por lo tanto

if (typeof maybeObject != "undefined") {
   alert("GOT THERE");
}
JAL avatar Nov 15 '2010 17:11 JAL

Hay muchas verdades a medias aquí, así que pensé en aclarar algunas cosas.

En realidad, no se puede saber con precisión si existe una variable (a menos que desee incluir cada segunda línea en un bloque try-catch).

La razón es que Javascript tiene este notorio valor que undefinedsorprendentemente no significa que la variable no esté definida o que no exista.undefined !== not defined

var a;
alert(typeof a); // undefined (declared without a value)
alert(typeof b); // undefined (not declared)

Entonces, tanto una variable que existe como otra que no puede informarle el undefined tipo.

En cuanto a la idea errónea de @Kevin null == undefined,. Se debe a la coerción de tipos, y es la razón principal por la que Crockford sigue diciéndole a todos los que no están seguros de este tipo de cosas que utilicen siempre el operador de igualdad estricta ===para comprobar si hay valores posiblemente falsos. null !== undefinedte da lo que podrías esperar. Tenga en cuenta también que foo != nullpuede ser una forma eficaz de comprobar si una variable no es ni undefinedni null. Por supuesto que puedes ser explícito, porque puede ayudar a la legibilidad.

Si restringe la pregunta para verificar si existe un objeto, typeof o == "object"puede ser una buena idea, excepto si no considera objetos de matriz, ya que este también será del tipo objectque puede dejarlo un poco confundido. Sin mencionar que eso typeof nulltambién te dará objectlo que simplemente está mal.

El área principal en la que realmente debes tener cuidado con typeof, undefined, y otros misterios son los objetos anfitriones null. unknownNo se puede confiar en ellos. Son libres de hacer casi cualquier cosa sucia que quieran. Así que tenga cuidado con ellos, verifique su funcionalidad si puede, porque es la única forma segura de usar una característica que tal vez ni siquiera exista.

gblazex avatar Nov 15 '2010 18:11 gblazex

Puedes usar:

if (typeof objectName == 'object') {
    //do something
}
Calvin avatar Nov 15 '2010 17:11 Calvin

Dos caminos:

tipo de para variables locales

Puedes probar un objeto local usando typeof:

if (typeof object !== "undefined") {}

ventana para variables globales

Puede probar un objeto global (uno definido en el ámbito global) inspeccionando el objeto de la ventana:

if (window.FormData) {}
superluminary avatar Oct 31 '2013 13:10 superluminary