Sobes.tech
Middle

Каква е разликата между етикетите <script>, <script async> и <script defer>?

sobes.tech AI

Отговор от AI

Стандартният <script> спира анализа на HTML, зарежда скрипта и го изпълнява, след което анализът продължава.

<script async> зарежда скрипта асинхронно, докато анализът на HTML продължава. Скриптът се изпълнява веднага след зареждане. Поръчката на изпълнение не е гарантирана.

<script defer> зарежда скрипта асинхронно, докато анализът на HTML продължава. Скриптът се изпълнява само след завършване на анализа на HTML, но преди събитието DOMContentLoaded. Поръчката на изпълнение на скриптовете с defer се запазва според тяхното появяване в HTML.

Сравнителна таблица:

Атрибут Анализ на HTML по време на зареждане на скрипта Изпълнение на скрипта Запазване на реда на изпълнение
Няма Спира Веднага след зареждане Да
async Продължава Веднага след зареждане (може да прекъсне анализа) Не
defer Продължава След завършване на анализа на HTML Да

Пример:

<!-- Обикновен скрипт - блокира анализа -->
<script src="script1.js"></script>

<!-- Асинхронен скрипт - не блокира анализа, изпълнява се веднага след зареждане -->
<script src="script2.js" async></script>

<!-- Отложен скрипт - не блокира анализа, изпълнява се след анализа на HTML -->
<script src="script3.js" defer></script>
<script src="script4.js" defer></script> <!-- Ще се изпълни след script3.js -->