Во всех более или менее современных языках программирования функциям и типам дынных не нужна преждевременная декларация (до использования в коде), а переменным, например нужна.
Есть какое-то четкое правило для такого разграничения? Чем такой код плох?
{
print(a); // печатает 3
a = 5;
print(a); // печатает 5
var a = 3;
}
Никакого особого смысла в вопросе нет, просто воскресенье и простуда.