Стандартный <script> останавливает парсинг HTML, загружает скрипт и исполняет его, затем парсинг продолжается.
<script async> загружает скрипт асинхронно, пока парсинг HTML продолжается. Скрипт исполняется сразу после загрузки. Порядок исполнения не гарантирован.
<script defer> загружает скрипт асинхронно, пока парсинг HTML продолжается. Скрипт исполняется только после завершения парсинга HTML, но до срабатывания события DOMContentLoaded. Порядок исполнения скриптов с defer сохраняется в соответствии с их появлением в HTML.
Сравнительная таблица:
| Атрибут | Парсинг HTML во время загрузки скрипта | Исполнение скрипта | Сохранение порядка исполнения |
|---|---|---|---|
| Нет | Пауза | Сразу после загрузки | Да |
async | Продолжается | Сразу после загрузки (может прервать парсинг) | Нет |
defer | Продолжается | После завершения парсинга HTML | Да |
Пример:`
html