JavaScript tiene varias formas de indicar la ausencia de un valor. Esta página
describe las dos formas más comunes: los tipos de datos null
y undefined
.
null
La palabra clave null
representa una ausencia de valor definida de forma intencional. null
es un objeto primitivo, aunque el operador typeof
muestra que null
es un objeto.
Este es un error que se produjo
desde la primera versión de JavaScript y se dejaron intencionalmente
sin abordar para evitar interrumpir
el comportamiento esperado en la Web.
typeof null
> object
Podrías definir una variable como null
con la expectativa de que refleje un valor que se le asignó en algún
punto en una secuencia de comandos o un valor explícitamente ausente. También puedes asignar el null
a una referencia existente para borrar un valor anterior.
undefined
undefined
es un valor primitivo asignado a variables
que se acaban de declarar, o al valor resultante de una operación que
no devuelve un valor significativo. Por ejemplo, esto puede ocurrir cuando declaras
una función en la consola para desarrolladores de un navegador:
function myFunction() {}
> undefined
Una función muestra undefined
de forma explícita cuando su declaración return
no muestra ningún valor.
(function() {
return;
}());
> undefined
Comparación entre null
y undefined
Aunque undefined
y null
tienen algunas superposiciones funcionales, tienen
diferentes propósitos. En sentido estricto, null
representa un valor
definidos intencionalmente como “en blanco”, y undefined
representa la falta de un valor asignado.
null
y undefined
son parcialmente iguales, pero no estrictamente iguales.
El operador de igualdad baja coerciona operandos de diferentes tipos a booleanos
valores, por lo que null
y undefined
son false
. El operador de igualdad estricto
considera que los operandos de diferentes tipos de datos son desiguales.
null == undefined
> true
null === undefined
> false
A diferencia de la palabra clave reservada null
, undefined
es una propiedad del
objeto global. Este fue un diseño
decisión tomada al principio del desarrollo de JavaScript, y permitió que los navegadores heredados
reemplaza undefined
por completo. En los navegadores actualizados, es posible usar
undefined
como identificador en alcances no globales, y anula su valor en
el alcance de esa declaración. Nunca uses undefined
como identificador. Integra
puede causar comportamientos inesperados y puede confundir a quienes las mantengan
tu base de código.
Verifica tus conocimientos
¿Qué muestra typeof null
?
primitive
string
object
undefined