Всегда считал, что undefined — перезаписываемая переменная. Её часто передают в качестве аргумента в анонимных функциях:
(function(window, undefined){})(window);
Когда-то давно спросил здесь, почему так делают, например, в jQuery. Мне ответили, что undefuned может быть равно чему угодно. Но:
var undefined = 4;
alert([undefined, typeof undefined]);
console.log(undefined, typeof undefined);
Где правда?