да не при чем тут обращение через document.<имя элемента>, к тому же оно работает не для всех элементов
а причина в том, что глобальные переменные - свойства глобального объекта (упрощенно, см. ниже)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
for( var k in window ){
var v = k == 'name' ? eval(k) : '';
document.write(k+': '+v+'<br>');
// document.write(k+': '+window[k]+'<br>');
}
</script>
</body>
</html>
ну и в дополнение объявление переменной через var и создание переменной без var - это не то же самое
<script>
var a = 1; // создаем глобальную переменную
b = 2; // создаем свойство в глобальном объекте (window)
alert( a );
alert( b );
alert( delete a ); // нельзя удалить глобальную переменную
alert( delete b );
try {
alert( a );
} catch( e ){ alert(e); }
try {
alert( b );
} catch( e ){ alert(e); }
</script>