Middle
Каква е разликата между таговете <script>, <script async> и <script defer>?
sobes.tech AI
Отговор от AI
<script>: Анализирането на HTML спира, скриптът се зарежда и изпълнява, след което анализът на HTML продължава. Блокира рендерирането.<script async>: Скриптът се зарежда асинхронно, паралелно с анализа на HTML. Щом се зареди, анализът на HTML се прекъсва, за да се изпълни скриптът, след което продължава. Поредността на изпълнение на асинхронните скриптове не е гарантирана.<script defer>: Скриптът се зарежда асинхронно, паралелно с анализа на HTML. Изпълнението се отлага до пълното завършване на анализа на HTML и изграждането на DOM дървото. Поредността на отложените скриптове се запазва според тяхната поредност в документа.
Ето таблица, която обобщава разликите:
| Атрибут | Зареждане | Изпълнение | Блокиране на анализа на HTML | Поредност на скриптовете |
|---|---|---|---|---|
| липсва | Синхронно | Веднага след зареждането | Да | Гарантирано |
async |
Асинхронно | Веднага след зареждането (ако HTML все още се анализира) | Да (по време на изпълнение) | Не гарантирано |
defer |
Асинхронно | След пълното зареждане на HTML и изграждане на DOM | Не (освен в момента на изпълнение, но след HTML) | Гарантирано |