Js: Почему интерпритатор не выдает var is not defined при обращении к id?
Если для именования HTML элемента используется атрибут id и если объект Window еще не имеет свойства имя которого совпадает со значением атрибута id, то объект Window получает неперечисляемое свойство с именем соответствующим значению атрибута id, значением которого становится объект HTMLElement, представляющий этот элемент документа. Таким образом значения атрибута id в HTML документах становятся глобальными переменными, доступными сценариям. Если например документ включает элемент <button id="okay">, то на него можно сослаться с помощью глобальной переменной "okay". © Дэвид Флэнаган.
Потому что переменная не объявлена через var и совпадает с id элемента.
В данном случае, элементы документа с id доступны как глобальные переменные с такими же именами.
Старый прикол.