Undefined
El valor especial undefined, cuyo tipo a su vez es también undefined, se le asigna a las variables, parámetros de una función, posiciones de un array, etc. cuando han sido definidos pero todavía no se les ha dado ningún valor.
Cuando accedemos a posiciones que no existen de un array, JavaScript no lanzará ningún error. En su lugar devuelve el valor undefined.
let a;
console.log(a); // undefined
let array = [1,2,3];
console.log(array[6]); // undefined
function f(nombre) {
console.log(`Hola ${nombre}`);
}
f("Juan"); // Hola Juan
f(); // Hola undefined
La forma de comprobar si una variable tiene valor sería comparando con el valor undefined directamente (usando comparación estricta ===). También se puede comprobar el tipo con el operador typeof. Con el segundo método, si la variable no existe, no daría error (con el primero sí).
function f(nombre) {
if(nombre === undefined) {
console.error("No has introducido un nombre!");
} else {
console.log(`Hola ${nombre}`);
}
}
f("Juan"); // Hola Juan
f(); // // ERROR: No has introducido un nombre!
undefined vs null
Es importante no confundir undefined con null. El segundo es un valor que se debe asignar a propósito y hace referencia a un valor de tipo objeto pero que en este momento no apunta a ninguna posición de memoria. Son parecidos, pero no es lo mismo.
let a; // undefined
let b = null;
console.log(a == b); // true (son equivalentes)
console.log(a === b); // false (diferente tipo de datos)