Comprobar si el objeto existe en JavaScript
¿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:
maybeObject
no está definido.
Puede utilizar el typeof
operador 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");
}
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 undefined
sorprendentemente 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 !== undefined
te da lo que podrías esperar. Tenga en cuenta también que foo != null
puede ser una forma eficaz de comprobar si una variable no es ni undefined
ni 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 object
que puede dejarlo un poco confundido. Sin mencionar que eso typeof null
también te dará object
lo 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
. unknown
No 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.
Puedes usar:
if (typeof objectName == 'object') {
//do something
}
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) {}