Назад к вопросам
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) | Гарантирован |