Back to questions
Middle
2
Расскажи про атрибуты async и defer при подключении скриптов: в чём разница, когда блокируется парсинг HTML?
Companies where asked
ВШЭ
Answer from AI
sobes.tech AI
Атрибуты async и defer используются для управления загрузкой и выполнением внешних скриптов в HTML:
-
async
- Скрипт загружается асинхронно параллельно с парсингом HTML.
- Как только скрипт загружен, парсинг HTML прерывается, и скрипт выполняется сразу.
- После выполнения парсинг продолжается.
- Скрипты с async выполняются в порядке загрузки, не гарантируется порядок.
-
defer
- Скрипт загружается асинхронно параллельно с парсингом HTML.
- Выполнение скрипта откладывается до тех пор, пока весь HTML не будет полностью распарсен.
- Скрипты с defer выполняются в том порядке, в котором они объявлены.
Когда блокируется парсинг HTML?
- Без async/defer: при встрече
<script src=...>парсинг останавливается, скрипт загружается и выполняется, затем парсинг продолжается. - С async: парсинг не блокируется при загрузке, но блокируется во время выполнения скрипта.
- С defer: парсинг не блокируется ни при загрузке, ни при выполнении, скрипт выполняется после полного парсинга.
Используйте defer для скриптов, которые зависят от DOM, и async для независимых скриптов, например аналитики.