Что такое Defer?
Продвинутые темы
`defer` — атрибут тега <script>, который загружает скрипт параллельно с парсингом HTML и выполняет его после построения DOM, сохраняя порядок скриптов.
Поведение
- Скрипт скачивается параллельно с парсингом (не блокирует его).
- Выполняется после построения DOM, перед
DOMContentLoaded. - Порядок сохраняется — скрипты выполняются в порядке объявления.
- Работает только для внешних скриптов (
src).
<script defer src="app.js"></script>
<script defer src="utils.js"></script>defer против async и обычного скрипта
- Обычный — блокирует парсинг HTML на время загрузки и выполнения.
- async — параллельная загрузка, выполнение сразу по загрузке, порядок не гарантирован.
- defer — параллельная загрузка, выполнение после DOM, порядок сохраняется.
Когда использовать
Для скриптов, зависящих от DOM или друг от друга — defer. Для независимых (аналитика) — async.
Коротко для собеседования
defer грузит скрипт параллельно с парсингом и выполняет после построения DOM, сохраняя порядок. Идеален для скриптов, работающих с DOM. В отличие от async, который выполняет сразу и без гарантии порядка.