Undefined

<< String Operadores >>

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)

<< String Operadores >>