Плохо ли объявлять переменные в начале кода?
Для JS - вполне нормально. Это не очень хорошая практика для языков со статической типизацией, а в JS это вполне нормально.
Нормальная практика - совмещать инициализацию и объявление переменных. Как минимум код читается лучше. Вам не нужно помнить о том, какой переменной вы выполняете присваивание и не перезаписывает ли оно предыдущие данные.