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.
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í).
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.