¿Cómo verifico una variable si es
null
oundefined
y cuál es la diferencia entrenull
yundefined
?¿Cuál es la diferencia entre
==
y===
(es difícil buscar en Google "===")?
javascript
null
undefined
MUG4N
fuente
fuente
==
y===
está bien descrita aquí .Respuestas:
Es la variable
null
:... pero tenga en cuenta que esto último también será cierto si
a
es asíundefined
.Es
undefined
:... pero de nuevo, tenga en cuenta que el último es vago; También será cierto si
a
es asínull
.Ahora, a pesar de lo anterior, la forma habitual de verificarlos es usar el hecho de que son falsey :
Esto se define por ToBoolean en la especificación.
Ambos valores se usan generalmente para indicar la ausencia de algo.
undefined
es el más genérico, se usa como el valor predeterminado de las variables hasta que se les asigna algún otro valor, como el valor de los argumentos de la función que no se proporcionaron cuando se llamó a la función, y como el valor que se obtiene cuando se solicita un objeto para una propiedad que no tiene. Pero también se puede usar explícitamente en todas esas situaciones. (Hay una diferencia entre un objeto que no tiene una propiedad y la propiedad con el valorundefined
; hay una diferencia entre llamar a una función con el valorundefined
de un argumento y dejar ese argumento por completo).null
es un poco más específico queundefined
: es una referencia de objeto en blanco. JavaScript se escribe libremente, por supuesto, pero no todas las cosas con las que JavaScript interactúa se escriben libremente. Si una API como el DOM en los navegadores necesita una referencia de objeto que está en blanco, se utilizanull
, noundefined
. Y de manera similar, lagetElementById
operación del DOM devuelve una referencia de objeto, ya sea válida (si encontró el elemento DOM) onull
(si no lo hizo).Curiosamente (o no), son sus propios tipos. Es decir,
null
es el único valor en el tipo Nulo, yundefined
es el único valor en el tipo Indefinido.La única diferencia entre ellos es que
==
hará una coerción de tipo para intentar que los valores coincidan, y===
no lo hará. Entonces, por ejemplo,"1" == 1
es cierto, porque"1"
obliga a1
. Pero"1" === 1
es falso , porque los tipos no coinciden. ("1" !== 1
es cierto). El primer paso (real) de===
es "¿Son iguales los tipos de operandos?" y si la respuesta es "no", el resultado esfalse
. Si los tipos son iguales, hace exactamente lo que==
hace.La coerción de tipos utiliza reglas bastante complejas y puede tener resultados sorprendentes (por ejemplo,
"" == 0
es cierto).Más en la especificación:
==
también llamada igualdad "suelta")===
)fuente
if (a) { ... }
significaría "sia
es verdadero", donde "verdadero" es un valor de cadena no cero, no nulo, no indefinido, no falso, no vacío. :-)null
no es un objeto , es una referencia de objeto que significa "sin objeto". Esto es importante, porque es lo que se usa con las interfaces proporcionadas por el host cuando proporcionan referencias de objetos pero no tienen una para proporcionar (por ejemplo,node.nextSibling
cuándonode
es el último elemento en su elemento primario ogetElementById
cuando no hay ningún elemento con esa ID). La tecnología que utiliza el host para esto puede no ser tan flexible como JavaScript es sobre los tipos de variables / propiedades, por lo que era necesario tener unanull
referencia obj (en lugar deundefined
).typeof null
devolver "objeto" tiene sentido. El único otro valor que tendría sentido sería "nulo", ya que definitivamente debería devolver algo diferente detypeof undefined
. null representa una referencia de objeto nulo, que, como mínimo, significa que la variable que la contiene está destinada a algún tipo de 'objeto'. Si fue un error, fue un buen error. De todos modos, en lo que respecta a la respuesta, es bueno saber el consejo sobreundefined
! ==undefined
durante la secuencia de comandos de ventanas cruzadas, especialmente para fines de depuración.La diferencia es sutil.
En JavaScript, una
undefined
variable es una variable que nunca se ha declarado o que nunca se le ha asignado un valor. Digamos que declaras,var a;
por ejemplo,a
lo seráundefined
, porque nunca se le asignó ningún valor.Pero si después se asigna
a = null;
a continuación,a
será ahoranull
. En JavaScriptnull
es un objeto (intentetypeof null
en una consola de JavaScript si no me cree), lo que significa que nulo es un valor (de hecho, inclusoundefined
es un valor).Ejemplo:
Esto puede resultar útil en argumentos de función. Es posible que desee tener un valor predeterminado, pero considere nulo como aceptable. En cuyo caso puedes hacer:
Si omite, el
optional
parámetrodoSomething(1, 2) then
opcional será la"three"
cadena, pero si pasa,doSomething(1, 2, null)
entonces será opcionalnull
.En cuanto a los comparadores iguales
==
y estrictamente iguales===
, el primero es de tipo débil, mientras que estrictamente igual también verifica el tipo de valores. Eso significa que0 == "0"
volverá verdadero; while0 === "0"
devolverá falso, porque un número no es una cadena.Puede utilizar esos operadores para verificar entre
undefined
unnull
. Por ejemplo:El último caso es interesante, porque le permite verificar si una variable es indefinida o nula y nada más:
fuente
La especificación es el lugar para obtener respuestas completas a estas preguntas. Aquí hay un resumen:
x
, puedes:null
por comparación directa usando===
. Ejemplo:x === null
undefined
por cualquiera de los dos métodos básicos: comparación directa conundefined
otypeof
. Por varias razones , prefierotypeof x === "undefined"
.null
yundefined
mediante el uso==
y confiando en las reglas de tipo de coerción poco arcanos que mediax == null
hace exactamente lo que quiere.==
y===
es que si los operandos son de diferentes tipos,===
siempre volveránfalse
mientras==
convertirá uno o ambos operandos en el mismo tipo utilizando reglas que conducen a un comportamiento poco intuitivo. Si los operandos son del mismo tipo (por ejemplo, ambos son cadenas, como en latypeof
comparación anterior),==
y===
se comportarán exactamente igual.Más lectura:
fuente
solo verifique si una variable tiene un valor válido como este:
devolverá verdadero si la variable no contiene:
fuente
indefinido
Significa que la variable aún no está inicializada.
Ejemplo:
igual (==)
Solo verifica que el valor sea igual al tipo de datos no.
Ejemplo:
Porque solo verifica el valor.
Estrictos iguales (===)
Comprueba que el valor y el tipo de datos deben ser iguales.
Ejemplo:
Debido a que verifica que el tipo de datos x es un tipo primitivo e y es un objeto booleano.
fuente
El anuncio 1.
null
no es un identificador para una propiedad del objeto global, comoundefined
puede serMostrar fragmento de código
Anuncio 2. Los
===
valores y tipos de verificación. El==
no requieren mismos tipos y conversión implícita hecha antes de la comparación (usando.valueOf()
y.toString()
). Aquí tienes todo ( src ):Si
== (su negación ! = )
=== (su negación ! == )
fuente
document.all == null
ydocument.all !== null
Si su verificación (lógica) es para una negación (!) Y desea capturar JS
null
yundefined
(ya que diferentes navegadores le darán resultados diferentes), usaría la comparación menos restrictiva: por ejemplo:Esto capturará ambos
null
yundefined
fuente
Probar con lógica diferente . Puede usar el siguiente código para verificar las cuatro (4) condiciones para la validación como no nulo, no en blanco, no indefinido y no cero solo use este código (! (! (Variable))) en javascript y jquery.
}
fuente