Назад к вопросам
Middle
66
questionbank

В чем разница между тегами <script>, <script async> и <script defer>?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

  • <script>: Парсинг HTML останавливается, скрипт загружается и выполняется, затем парсинг HTML возобновляется. Блокирует рендеринг.
  • <script async>: Скрипт загружается асинхронно, параллельно с парсингом HTML. Как только скрипт загружен, парсинг HTML прерывается для выполнения скрипта, затем возобновляется. Порядок выполнения асинхронных скриптов не гарантирован.
  • <script defer>: Скрипт загружается асинхронно, параллельно с парсингом HTML. Выполнение откладывается до полного завершения парсинга HTML и построения DOM-дерева. Порядок выполнения отложенных скриптов сохраняется в соответствии с их порядком в документе.

Вот таблица, обобщающая различия:

Атрибут Загрузка Исполнение Блокировка парсинга HTML Порядок скриптов
отсутствует Синхронная Сразу после загрузки Да Гарантирован
async Асинхронная Сразу после загрузки (если HTML еще парсится) Да (во время выполнения) Не гарантирован
defer Асинхронная После полной загрузки HTML и построения DOM Нет (кроме момента выполнения, но после HTML) Гарантирован