En Javascript, las variables son contendores que usamos para guardar valores. Dos ‘especiales’ y que nos vamos a encontrar con más frecuencia son undefined
y null
.
Ambos tienen similitudes, en el sentido de que se utilizan para indicar que una variable no tiene un valor significativo (o valido, o valor en absoluto).
Sin embargo, tienen significados y usos diferentes:
undefined: Es el valor asignado automáticamente a una variable que ha sido declarada pero no inicializada
null: Es un valor asignado explícitamente a una variable para indicar que no tiene un valor. Se utiliza para representar la ausencia intencional de un valor
Es decir, como vemos, la diferencia entre uno y otro es que undefined
es automático, y null
explicito.
Valor undefined
undefined
es un valor primitivo en JavaScript. Se utiliza para indicar que una variable ha sido declarada, pero no ha sido inicializada con un valor.
Donde nos vamos a encontrar undefined
Variables no inicializadas
Si intentamos acceder a una variable declarada, pero aún pero no inicializada, su valor es undefined
.
let x;
console.log(x); // undefined
Propiedades no existentes
Si se intentamos acceder a una propiedad que no existe en un objeto, el resultado es undefined
.
let obj = {};
console.log(obj.propiedadNoExistente); // undefined
Funciones sin return
Las funciones que no tienen una declaración return
implícitamente retornan undefined
.
function miFuncion() {}
console.log(miFuncion()); // undefined
Argumentos no proporcionados
Si un argumento no se proporciona al llamar a una función, su valor es undefined
.
function saludar(nombre) {
console.log(nombre);
}
saludar(); // undefined
En resumen, tendremos undefined
cada vez que vayamos a acceder algo, que no está (o aún no está)
Valor null
null
es un valor primitivo que se usa para indicar intencionalmente la ausencia de valor. A diferencia de undefined
, que generalmente es asignado automáticamente, null
es explícitamente asignado por el programador.
Donde nos vamos a encontrar null
Asignación explícita
En este caso, x
se inicializa explícitamente con null
, indicando que no tiene un valor.
let x = null;
console.log(x); // null
Objetos vacíos
Utilizar null
en propiedades de objetos puede ser una forma de indicar que no se ha asignado ningún valor a esa propiedad.
let obj = { propiedad: null };
console.log(obj.propiedad); // null