PassFront
  1. PassFront
  2. База знаний
  3. Продвинутые темы

Что такое атрибут defer у скрипта?

Продвинутые темы

Атрибут `defer` у тега `<script>` заставляет браузер загружать скрипт параллельно с парсингом HTML и выполнять его только после полного построения DOM, сохраняя порядок скриптов.

Поведение defer

  • Скрипт скачивается параллельно с парсингом HTML (не блокирует его).
  • Выполняется после построения DOM, перед событием DOMContentLoaded.
  • Порядок сохраняется — скрипты выполняются в порядке их объявления в HTML.
  • Работает только для внешних скриптов (src).
<script defer src="app.js"></script>
<script defer src="utils.js"></script>
<!-- выполнятся после DOM, в порядке: app.js, затем utils.js -->

defer против async

  • defer — параллельная загрузка, выполнение после DOM, порядок сохраняется. Для зависимых скриптов и работы с DOM.
  • async — параллельная загрузка, выполнение сразу по загрузке, порядок не гарантирован. Для независимых скриптов (аналитика).

defer против обычного скрипта

Обычный скрипт блокирует парсинг HTML, defer — нет.

Коротко для собеседования

defer грузит скрипт параллельно с парсингом и выполняет после построения DOM, сохраняя порядок. Идеален для скриптов, зависящих от DOM или друг от друга. В отличие от async, который выполняет сразу и без гарантии порядка.

Другие вопросы раздела