Pregunta ¿Cómo determinar si la variable es "indefinida" o "nula"?


¿Cómo determino si la variable es undefined o null? Mi código es el siguiente:

var EmpName = $("div#esd-names div#name").attr('class');
if(EmpName == 'undefined'){
  //DO SOMETHING
};
<div id="esd-names">
  <div id="name"></div>
</div>

Pero si hago esto, el intérprete de JavaScript detiene la ejecución.


1598
2018-04-15 18:12


origen


Respuestas:


Puedes usar las cualidades de operador de igualdad abstracta para hacer esto:

if (variable == null){
    // your code here.
}

Porque null == undefined es cierto, el código anterior captará ambos null y undefined.


2194
2018-04-15 18:14



La forma estándar de atrapar null y undefined al mismo tiempo es esto:

if (variable == null) {
     // do something 
}

--que es 100% equivalente a lo más explícito pero menos conciso:

if (variable === undefined || variable === null) {
     // do something 
}

Al escribir JS profesional, se da por hecho que [tipo igualdad y el comportamiento de == vs ===] [1] se entiende. Por lo tanto usamos == y solo compare con null.


Editar de nuevo

Los comentarios que sugieren el uso de typeof son simplemente incorrecto. Sí, mi solución anterior causará un error de referencia si la variable no existe. Ésto es una cosa buena. Este error de referencia es deseable: le ayudará a encontrar sus errores y solucionarlos antes de enviar su código, al igual que los errores del compilador en otros idiomas.

No debe tener ninguna referencia a variables no declaradas en su código.


908
2018-01-22 03:01



if (variable == null) {
    // Do stuff, will only match null or undefined, this won't match false
}

176
2018-04-15 18:25



Combinando las respuestas anteriores, parece que la respuesta más completa sería:

if( typeof variable === 'undefined' || variable === null ){
    // Do stuff
}

Esto debería funcionar para cualquier variable no declarada o declarada y configurada explícitamente como nula o indefinida. La expresión booleana debe evaluarse como falsa para cualquier variable declarada que tenga un valor real no nulo.


161
2017-10-11 17:02



if (typeof EmpName != 'undefined' && EmpName) {

evaluará a verdadero si el valor no es:

  • nulo

  • indefinido

  • Yaya

  • cuerda vacía ("")

  • 0

  • falso


74
2018-05-07 07:24



jQuery attr() función devuelve una cadena en blanco o el valor real (y nunca null o undefined) La única vez que regresa undefined es cuando su selector no devolvió ningún elemento.

Por lo tanto, es posible que desee probar con una cadena en blanco. Alternativamente, dado que las cadenas en blanco, nulas e indefinidas son false-y, puede hacer esto:

if (!EmpName) { //do something }

20
2018-04-15 18:20



Me gusta usar esto:

if (!!variable) {
   //do something
}

Captura ambos nulo y indefinido


12
2017-09-16 08:35



Si la variable que desea verificar es global, haga

if (window.yourVarName) {
    // Your code here
}

Esta forma de verificar no generará un error incluso si el yourVarName la variable no existe

Ejemplo: Deseo saber si mi navegador admite la API de historial

if (window.history) {
    history.back();
}

Cómo funciona esto:

window es un objeto que contiene todas las variables globales como sus propiedades, y en JavaScript es legal intentar acceder a una propiedad de objeto no existente. Si history no existe entonces window.history devoluciones undefined. undefined es falsey, entonces codifica en if(undefined){} bloque no se ejecutará.


9
2018-02-10 16:30



He venido a escribir mi propia función para esto ... javascript es raro

Se puede usar literalmente cualquier cosa. (Tenga en cuenta que esto también verifica si la variable contiene algún elemento utilizable valores. Pero dado que esta información también suele ser necesaria, creo que vale la pena publicarla). Por favor considere dejar una nota.

function empty(v) {
        let type = typeof v;
        if(type === 'undefined') {
            return true;
        }
        if(type=== 'boolean') {
            return !v;
        }
        if(v === null) {
            return true;
        }
        if(v === undefined) {
            return true;
        }
        if(v instanceof Array) {
            if(v.length < 1) {
                return true;
            }
        }
        else if(type === 'string') {
            if(v.length < 1) {
                return true;
            }
            if(v==='0') {
                return true;
            }
        }
        else if(type === 'object') {
            if(Object.keys(v).length < 1) {
                return true;
            }
        }
        else if(type === 'number') {
            if(v===0) {
                return true;
            }
        }
        return false;
    }

Compatible con los tiposcript

editar. esta función debería hacer exactamente lo mismo que PHPs empty()función (ver RETURN VALUES)

Considera undefined, null, false, 0, 0.0, "0"  {}, [] como vacío

"0.0", NaN, " ", true se consideran no vacíos


7
2017-10-24 15:14