Я думаю, что здесь отталкиваться надо от того, что getElementById() это встроенная функция, а не переменная, поэтому она возвращает такие значения. Но когда мы имеем дело с переменными, то там надо ожидать undefined всегда, когда переменная не определена. Вроде так получается.
Вот ссылки про эту функцию:
http://www.w3.org/TR/DOM-Level-2-Cor...ml#ID-getElBId
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Есть ещё NaN, кстати.