Как атрибуты defer и async влияют на загрузку и выполнение скриптов, и как ещё можно избежать блокировки парсинга HTML скриптами?

Для внешних классических скриптов defer загружает параллельно и выполняет после разбора HTML в порядке документа; async выполняет по готовности без гарантии порядка. Загрузка и выполнение — разные этапы.

Короткий ответ

Что ответить на собеседовании

Для внешних классических скриптов defer загружает параллельно и выполняет после разбора HTML в порядке документа; async выполняет по готовности без гарантии порядка. Загрузка и выполнение — разные этапы.

Подробный разбор

Ответ с пояснениями

Для внешних классических скриптов defer загружает параллельно и выполняет после разбора HTML в порядке документа; async выполняет по готовности без гарантии порядка. Загрузка и выполнение — разные этапы.

defer-скрипты выполняются до DOMContentLoaded, async может прервать парсинг для исполнения. Модульные скрипты по умолчанию имеют отложенное поведение. Ещё можно перенести некритичный код к концу документа или загрузить по действию пользователя; это не устраняет стоимость самого исполнения JavaScript.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее