Браузер читает ваш HTML от начала до конца и может выполнять его, когда он читается и разбирается на исполняемые куски (объявления переменных, определения функций и т. Д.). точка.
Это отличается от других контекстов программирования, которые обрабатывают (компилируют) весь ваш исходный код, возможно связывают его вместе с любыми библиотеками, необходимыми для разрешения ссылок, и создают исполняемый модуль, с которого начинается выполнение.
Ваш код может ссылаться на именованные объекты (переменные, другие функции и т. Д.), Которые определены далее, но вы не можете выполнить ссылочный код, пока не будут доступны все фрагменты.
Когда вы ознакомитесь с JavaScript, вы начнете глубоко осознавать свою необходимость писать вещи в правильной последовательности.
Редакция: Чтобы подтвердить принятый ответ (см. Выше), используйте Firebug для перехода через раздел сценариев веб-страницы. Вы увидите, что он переходит от функции к функции, посещая только первую строку, прежде чем он фактически выполнит какой-либо код.