¿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.
Respuestas:
Puede usar las cualidades del operador de igualdad abstracta para hacer esto:
Porque
null == undefined
es cierto, el código anterior capturará ambosnull
yundefined
.fuente
const y = undefined; y == null;
debería volvertrue
y
constante, pero comparasteabc
(noy
). Cuando probé ay
travésconsole.log(y == null);
de Chrome y Firefox, obtuve eltrue
resultado. 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, yaconst
que no se puede reasignar.null
oundefined
pasar si la variable es igual0
? La pregunta no se trata de probar un valor verdadero, sino de probar explícitamente paranull
oundefined
.La forma estándar de atrapar
null
yundefined
simultá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
typeof
son 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
/catch
si 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
typeof
es 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 == null
fuente
undefined
evalú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 yaundefined
será 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 nuncanull
oundefined
). El único momento en que regresaundefined
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 falsas, puede hacer esto:
fuente
ReferenceError: EmpName is not defined
undefined
si el atributo no existe en el elemento (no solo si el selector no tiene elementos coincidentes, según la respuesta). Por ejemplo, unimg
sinsrc
no volveríaundefined
para$('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
," "
,true
Se 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 < 1
o 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
yourVarName
variable no existe.Ejemplo: quiero saber si mi navegador admite API de historial
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. Sihistory
no existe, entonceswindow.history
regresaundefined
.undefined
es falsey, por lo que el código en unif(undefined){}
bloque no se ejecutará.fuente
null
oundefined
no funcionará si su JavaScript se ejecuta fuera de un navegador (es decir, en Node.js). También tratará los globales establecidos en0
,false
o''
lo mismo que aquellos que no están declaradosundefined
onull
, 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 defined
para 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
var
es una palabra reservada, esto arrojaráSyntaxError
Simplemente 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
,null
y algunas otras cosas como la cadena vacía, 0, -0NaN
yfalse
pasar.!
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
typeof
y compáreloundefined
directamente, 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
apple
valor 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
typeof
nunca cederáundefined
, solo la cuerda'undefined'
. Además,i == null
ya es cierto sii
esundefined
así, por lo que el segundo booleano sería redundante incluso si funcionara.La
foo == null
verificació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
undefined
o pornull
separado, debe aplicarse en este caso, y mi contribución al tema (¡27 respuestas no negativas por ahora!) Es utilizarlavoid 0
como una forma breve y segura de realizar la verificación paraundefined
.El uso
foo === undefined
no 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 compararnull
es la forma estándar de capturanull
yundefined
en 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 ambosnull
yundefined
simultá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.