Раньше всегда проверял на неопределенность так: x === 'undefined'
Сейчас обнаружил, что существует два вида undefined. Допустим, i элемент массива не определен. Тогда
typeof arr[i] === undefined, typeof arr[i] === 'undefined', arr[i] === undefined, arr[i] === 'undefined'
Выдаст: false, true, true, false. И в консоли слово undefined будет в одном случае строкой, а в другом спец. понятием серого цвета.
Что за дела?