Sobes.tech
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) Гарантирано