При использовании скриптов – на странице сначала полностью отработает скрипт, а уже потом – отобразится остальной HTML-код. Это крайне нежелательно, например в случах, когда через скрипт отображается реклама – то есть пользователь сначала должен будет подождать отображения рекламы.
Для решения проблемы существуют атрибуты defer/async – они работают только для внешних скриптов.
В таком коде (с async) первым сработает тот скрипт, который раньше загрузится:

А в таком коде (с defer) первым сработает всегда 1.js, а скрипт 2.js, даже если загрузился раньше, будет его ждать.
