<script>: Парсинг HTML останавливается, скрипт загружается и выполняется, затем парсинг HTML возобновляется. Блокирует рендеринг.<script async>: Скрипт загружается асинхронно, параллельно с парсингом HTML. Как только скрипт загружен, парсинг HTML прерывается для выполнения скрипта, затем возобновляется. Порядок выполнения асинхронных скриптов не гарантирован.<script defer>: Скрипт загружается асинхронно, параллельно с парсингом HTML. Выполнение откладывается до полного завершения парсинга HTML и построения DOM-дерева. Порядок выполнения отложенных скриптов сохраняется в соответствии с их порядком в документе.Вот таблица, обобщающая различия:
| Атрибут | Загрузка | Исполнение | Блокировка парсинга HTML | Порядок скриптов |
|---|---|---|---|---|
| отсутствует | Синхронная | Сразу после загрузки | Да | Гарантирован |
async | Асинхронная | Сразу после загрузки (если HTML еще парсится) | Да (во время выполнения) | Не гарантирован |
defer | Асинхронная | После полной загрузки HTML и построения DOM | Нет (кроме момента выполнения, но после HTML) | Гарантирован |