Pregunta ¿Cómo comparar variables a indefinidas, si no sé si existen? [duplicar]


Esta pregunta ya tiene una respuesta aquí:

En JavaScript puede declarar una variable y si es undefined, Puedes comprobar variable == undefined; Lo sé, pero ¿cómo se puede comparar un valor que aún no se conoce si está en la memoria?

Por ejemplo, tengo una clase que se crea cuando el usuario hace clic en un botón. Antes de esto, la clase no está definida, no existe en ningún lado; ¿cómo puedo compararlo?

¿Hay alguna manera sin usar try-catch?


75
2018-05-06 06:23


origen


Respuestas:


La mejor manera es verificar tipo, porque undefined/null/false son algo complicado en JS. Asi que:

if(typeof obj !== "undefined") {
    // obj is a valid variable, do something here.
}

Tenga en cuenta que typeof siempre devuelve una cadena y no genera un error si la variable no existe.


156
2018-05-06 07:00



if (obj === undefined)
{
    // Create obj
}

Si está haciendo una extensa programación de javascript, debe acostumbrarse a usar === y! == cuando quiera hacer una comprobación específica de tipo.

Además, si va a hacer una buena cantidad de javascript, le sugiero que ejecute el código a través de JSLint http://www.jslint.com puede parecer un poco draconiano al principio, pero la mayoría de las cosas que JSLint te advierte eventualmente regresarán para morderte.


39
2017-08-01 04:45



if (document.getElementById('theElement')) // do whatever after this

Para las cosas indefinidas que arrojan errores, pruebe el nombre de la propiedad del objeto principal en lugar de solo el nombre de la variable, en lugar de:

if (blah) ...

hacer:

if (window.blah) ...

2
2018-05-06 06:37



!undefined es verdadero en javascript, por lo que si quiere saber si su variable u objeto no está definido y desea tomar medidas, podría hacer algo como esto:

if(<object or variable>) {
     //take actions if object is not undefined
} else {
     //take actions if object is undefined
}

1
2017-07-06 19:09



if (!obj) {
    // object (not class!) doesn't exist yet
}
else ...

-1
2018-05-06 06:48