Из-за однопоточной природы JavaScript события и таймеры ставятся в очередь и выполняются последовательно по одному, они запускаются, когда в выполнении было открытие.
Лучше всего это продемонстрировать на диаграмме:
После того, как первый блок заканчивает выполнение, ожидают два асинхронных события: Обратный вызов мыши и Таймер , браузер выбирает Щелчок мыши в этом примере, и таймер будет ждать до следующего возможного времени, чтобы выполнить.
Проверьте эту действительно хорошую статью о Таймеры и события Джона Резига.