Обычный <script>: браузер останавливает парсинг HTML, загружает и исполняет скрипт, затем продолжает парсинг. Блокирует отображение.
<script async>: скрипт загружается асинхронно, парсинг HTML продолжается. Скрипт исполняется сразу после загрузки, при этом может прервать парсинг HTML. Порядок исполнения скриптов не гарантирован.
<script defer>: скрипт загружается асинхронно, парсинг HTML продолжается. Исполнение скрипта откладывается до завершения парсинга HTML и построения DOM-дерева. Скрипты исполняются в порядке их следования в HTML.
| Атрибут | Парсинг HTML | Загрузка скрипта | Исполнение скрипта | Зависимость от порядка |
|---|---|---|---|---|
| Отсутствует | Остановка | Блокирующая | Блокирующая | Гарантирован |
async | Продолжается | Неблокирующая | Может прервать парсинг | Не гарантирован |
defer | Продолжается | Неблокирующая | После парсинга HTML | Гарантирован |