За исключением веб-работников и взаимодействующих фреймов или окон (которые здесь не используются), Javascript является однопоточным в данном окне, поэтому в этом окне никогда не выполняется одновременно два потока выполнения. Таким образом, вам никогда не придется беспокоиться о состоянии гонки, которое может быть типичным беспокойством при использовании потоков.
Под обложками у Javascript есть очередь событий. Ваш текущий поток выполнения будет выполняться до конца, а затем, когда он завершится, интерпретатор javascript проверит очередь событий, чтобы увидеть, есть ли еще какие-то действия. Если это так, он запускает это событие и запускает другой поток выполнения. Практически все проходит через эту очередь событий (таймеры, ключевые события, события изменения размера, события мыши и т. Д.).
Вы можете прочитать больше об этом и увидеть кучу соответствующих ссылок в одном из моих других ответов на эту тему.