nulo e indefinido

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.

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