¿Cómo determino si la variable es undefinedo 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.

Respuestas:
Puede usar las cualidades del operador de igualdad abstracta para hacer esto:
Porque
null == undefinedes cierto, el código anterior capturará ambosnullyundefined.fuente
const y = undefined; y == null;debería volvertrueyconstante, pero comparasteabc(noy). Cuando probé aytravésconsole.log(y == null);de Chrome y Firefox, obtuve eltrueresultado. Si recibió un error, entonces tal vez trató de usar el operador de asignación en=lugar de la comparación, lo==que tendría sentido para devolver el error, yaconstque no se puede reasignar.nulloundefinedpasar si la variable es igual0? La pregunta no se trata de probar un valor verdadero, sino de probar explícitamente paranulloundefined.La forma estándar de atrapar
nullyundefinedsimultáneamente es esta:--que es 100% equivalente al más explícito pero menos conciso:
Al escribir JS profesional, se da por sentado que se entiende la igualdad de tipos y el comportamiento de
==vs.===Por lo tanto, usamos==y solo comparamos connull.Editar de nuevo
Los comentarios que sugieren el uso de
typeofson simplemente incorrectos. Sí, mi solución anterior causará un error de referencia si la variable no existe. Ésto es una cosa buena. Este ReferenceError es deseable: lo ayudará a encontrar sus errores y corregirlos antes de enviar su código, al igual que los errores del compilador en otros idiomas. Usetry/catchsi está trabajando con entradas sobre las que no tiene control.No debe tener ninguna referencia a variables no declaradas en su código.
fuente
!==lugar de!=.undefined, como lo haría cualquier variable declarada pero no inicializada, es decir,var someVar;por lo que su argumento realmente no se sostieneCombinando las respuestas anteriores, parece que la respuesta más completa sería:
Esto debería funcionar para cualquier variable que no esté declarada o declarada y explícitamente establecida como nula o indefinida. La expresión booleana debe evaluarse como falsa para cualquier variable declarada que tenga un valor real no nulo.
fuente
typeofes un operador, no una función, por lo que no necesita los paréntesis, pero de todos modos aprecio los paréntesis, simplemente por claridad de lectura.variable == nullfuente
undefinedevalúa igual anull./*jshint eqnull:true */en la parte superior de tu documento o función JS, y JSHint dejará de advertirte sobre tus usos de== null.==está rota? El coercitivoif(variable == null)en esta respuesta tiene mucho sentido para mí ...se evaluará como verdadero si el valor no es:
nulo
indefinido
Yaya
cuerda vacía ("")
0 0
falso
fuente
if (EmpName). Si yaundefinedserá falso.var EmpName; if (EmpName). Donde la variable se define pero no se le asigna un valor.La
attr()función jQuery devuelve una cadena en blanco o el valor real (y nuncanulloundefined). El único momento en que regresaundefinedes 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 falsas, puede hacer esto:
fuente
ReferenceError: EmpName is not definedundefinedsi el atributo no existe en el elemento (no solo si el selector no tiene elementos coincidentes, según la respuesta). Por ejemplo, unimgsinsrcno volveríaundefinedpara$('img').attr('src');He venido a escribir mi propia función para esto. JavaScript es raro.
Es utilizable en literalmente cualquier cosa. (Tenga en cuenta que esto también verifica si la variable contiene valores utilizables . Pero dado que esta información generalmente también es necesaria, creo que vale la pena publicarla). Por favor considere dejar una nota.
Compatible con TypeScript.
Esta función debería hacer exactamente lo mismo que la
empty()función de PHP (verRETURN VALUES)Considera
undefined,null,false,0,0.0,"0"{},[]como vacío."0.0",NaN," ",trueSe considera que no está vacía.fuente
{ }. Este es un problema de lenguaje común y tonto, pero lo había olvidado. Todas mis búsquedas muestran respuestas para un valor nulo indefinido o comparaciones de igualdad sueltas (==), pero no una igualdad estricta (===) o equivalente. Y luego, aquí en su respuesta clasificada -1 en la parte inferior de la página (antes de votar) está la respuesta que me eludió.Object.keys( obj ).length < 1o tal vez === 0, suponiendo que nunca será -1. De todos modos, votó a favor de 0, woo. : p==de===aquí, entonces esto sería una función razonable.Si la variable que desea verificar es global, haga
Esta forma de verificar no arrojará un error incluso si la
yourVarNamevariable no existe.Ejemplo: quiero saber si mi navegador admite API de historial
Cómo funciona esto:
windowes 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. Sihistoryno existe, entonceswindow.historyregresaundefined.undefinedes falsey, por lo que el código en unif(undefined){}bloque no se ejecutará.fuente
nulloundefinedno funcionará si su JavaScript se ejecuta fuera de un navegador (es decir, en Node.js). También tratará los globales establecidos en0,falseo''lo mismo que aquellos que no están declaradosundefinedonull, que generalmente está bien.El más corto y fácil:
esto evaluará verdadero si EmpName es:
fuente
Probablemente la forma más corta de hacer esto es:
Aquí está la prueba:
Mostrar fragmento de código
Y aquí hay más detalles sobre
==(fuente aquí )BONIFICACIÓN : por qué
===es más claro que==(mira la respuesta agc )fuente
Acabo de tener este problema, es decir, verificar si un objeto es nulo.
Simplemente uso esto:
Por ejemplo:
fuente
Dado que está utilizando jQuery , puede determinar si una variable no está definida o si su valor es nulo mediante el uso de una sola función.
fuente
ReferenceError: s is not definedpara el primer ejemplo.El elemento de verificación jQuery no es nulo:
fuente
En JavaScript, según mi conocimiento, podemos verificar una variable indefinida, nula o vacía como se muestra a continuación.
Verifique todas las condiciones:
fuente
vares una palabra reservada, esto arrojaráSyntaxErrorSimplemente puede usar lo siguiente (sé que hay formas más cortas de hacerlo, pero esto puede hacer que sea más fácil de observar visualmente, al menos para otros que miran el código).
fuente
La forma más fácil de verificar es:
fuente
false, que es potencialmente indeseable.undefined,nully algunas otras cosas como la cadena vacía, 0, -0NaNyfalsepasar.!operador coacciona el operando- aquívariable- a Boolean: ecma-international.org/ecma-262/#sec-tobooleanCon la solución a continuación:
Puedo verificar lo siguiente:
fuente
Para probar si una variable es nula o indefinida, uso el siguiente código.
fuente
typeofy compáreloundefineddirectamente, no como una cuerda. Esto funciona, pero el operador adicional no tiene ningún efecto sino hacerlo más verbal.Ejecuto esta prueba en la consola de Chrome. Usando (nulo 0) puede verificar indefinido:
fuente
Miremos esto,
En lo anterior, la variable solo se declara como
apple. En este caso, si llamamos métodoalert, se mostrará indefinido.En el segundo muestra nulo, porque la variable de
applevalor es nula.Por lo tanto, puede verificar si un valor es indefinido o nulo.
fuente
Mejor manera:
fuente
Porque === verifica tanto el tipo como el valor. El tipo de ambos es diferente pero el valor es el mismo.
fuente
fuente
typeofnunca cederáundefined, solo la cuerda'undefined'. Además,i == nullya es cierto siiesundefinedasí, por lo que el segundo booleano sería redundante incluso si funcionara.La
foo == nullverificación debe hacer el truco y resolver el caso "indefinido O nulo" de la manera más breve. (Sin considerar el caso "foo no se declara"). Pero las personas que están acostumbradas a tener 3 iguales (como la mejor práctica) podrían no aceptarlo. Solo mira eqeqeq o triple-igual en eslint y tslint ...El enfoque explícito, cuando estamos verificando si una variable es
undefinedo pornullseparado, debe aplicarse en este caso, y mi contribución al tema (¡27 respuestas no negativas por ahora!) Es utilizarlavoid 0como una forma breve y segura de realizar la verificación paraundefined.El uso
foo === undefinedno es seguro porque indefinido no es una palabra reservada y puede sombrearse ( MDN ). El uso de latypeof === 'undefined'verificación es seguro, pero si no nos vamos a preocupar por un caso no declarado, se puede usar el siguiente enfoque:fuente
si crea una función para verificarlo:
fuente
Llamar a typeof null devuelve un valor de "objeto", ya que el valor especial nulo se considera una referencia de objeto vacía. Safari a través de la versión 5 y Chrome a través de la versión 7 tienen una peculiaridad en la que llamar a typeof en una expresión regular devuelve "función", mientras que todos los demás navegadores devuelven "objeto".
fuente
Solo puede usar el segundo: ya que verificará tanto la definición como la declaración
fuente
Todavía creo que la mejor / segura manera de probar estas dos condiciones es convertir el valor en una cadena:
fuente
Puede verificar si el valor es indefinido o nulo simplemente usando typeof:
fuente
null. No entiendo por qué se proporcionan respuestas nuevas e incorrectas a una pregunta que recibió una respuesta correcta y completa hace muchos años. ¿Sientes que las respuestas actuales son de alguna manera insuficientes?if(x==null)Es una mala idea en JavaScript. Juzgue con"=="- puede causar una coerción de tipo inesperada, y CoffeeScript no puede leerlo, ¡ nunca use "==" o "! =" En el juicio de condición!if(x)será mejor, pero tenga cuidado con 0 y "" . Será tratado como falso , no el método igual con"!= null"es verdadero .Ver las mejores prácticas de JavaScript .
fuente
==para compararnulles la forma estándar de capturanullyundefineden JS. La coerción de tipo con==no es un riesgo en este contexto específico, y de hecho se está aprovechando para lograr el objetivo de atrapar a ambosnullyundefinedsimultáneamente. Dedique más tiempo a trabajar con el idioma antes de elegir ofrecer respuestas incorrectas y engañosas a preguntas que se resolvieron satisfactoriamente hace años.