En este breve tutorial vamos a ver las diferencias que existen entre los valores null
y undefined
en JavaScript. Para empezar, diremos que tanto null
como undefined
son tipos primitivos, y ahí terminan sus similitudes.
Cuando una variable tiene el valor undefined
, significa que la variable ha sido declarada, pero que carece de valor. Esto puede resultar confuso, ya que cuando accedes a una variable que no ha sido declarada, se mostrará el siguiente error:
ReferenceError: <variable> is not defined
Sin embargo, esto no significará que su valor sea undefined
, ya que como hemos dicho, las variables cuyo valor es undefined
, han sido previamente declaradas. Es importante que te quedes con esto.
Vamos a poner como ejemplo estas variables:
let nombre;
let apellido = null;
La variable nombre
tendrá el valor undefined
, mientras que la variable apellido tendrá el valor null
.
Para comprobar si una variable tiene el valor null
, debes usar el operador de comparación:
if (apellido === null) {
// Código
}
Del mismo modo, también podrás usar el operador de comparación para saber si una variable tiene el valor undefined
:
if (nombre === undefined) {
// Código
}
Demás, también funcionará el operador de negación. Es decir !null
es verdadero y, del mismo modo, !undefined
también es verdadero. Tendiendo esto en cuenta, los siguientes bloques de código siempre se ejecutarán si partimos de las variables nombre
y apellido
que hemos declarado como ejemplo.
En el caso de la variable nombre
:
if (!nombre) {
// Este código se ejecutará
}
Y en el caso de la variable apellido
:
if (!apellido) {
// Este código se ejecutará
}
Además, también podrás usar el operador typeof
para obtener los tipos de las variables, que devolverá 'undefined'
en caso de que la variable sea undefined
y 'object'
en caso de que sea null
.
En el caso de la variable nombre
, el siguiente código siempre se ejecutará:
let nombre;
if (typeof nombre === 'undefined') {
// Este código se ejecutará
}
En el caso de la variable apellido
, el siguiente código también se ejecutará:
let apellido = null;
if (typeof apellido === 'object') {
// Este código se ejecutará
}
Es importante que te quedes con que, a pesar de que null
es un tipo primitivo, su tipo se evaluará como 'object'
.
Y esto ha sido todo.