Sobes.tech
Middle

Qual é a diferença entre as tags <script>, <script async> e <script defer>?

sobes.tech IA

Resposta da IA

  • <script>: A análise do HTML para, o script é carregado e executado, depois a análise do HTML continua. Bloqueia a renderização.
  • <script async>: O script é carregado de forma assíncrona, em paralelo com a análise do HTML. Assim que o script é carregado, a análise do HTML é interrompida para executar o script, e depois continua. A ordem de execução dos scripts assíncronos não é garantida.
  • <script defer>: O script é carregado de forma assíncrona, em paralelo com a análise do HTML. A execução é adiada até que a análise do HTML e a construção da árvore DOM estejam completas. A ordem de execução dos scripts diferidos é mantida de acordo com sua ordem no documento.

Aqui está uma tabela que resume as diferenças:

Atributo Carregamento Execução Bloqueio da análise do HTML Ordem dos scripts
ausente Síncrona Imediatamente após o carregamento Sim Garantido
async Assíncrona Imediatamente após o carregamento (se o HTML ainda estiver sendo analisado) Sim (durante a execução) Não garantido
defer Assíncrona Após o carregamento completo do HTML e a construção do DOM Não (exceto no momento da execução, mas após o HTML) Garantido