SobesLab логотип SobesLab

Ответ

Оба атрибута предназначены для загрузки внешних скриптов без блокировки HTML-документа. `async` означает, что скрипт загружается асинхронно и выполняется сразу после загрузки, не дожидаясь других скриптов. При этом порядок выполнения async-скриптов не гарантируется (какой загрузился первым, тот и запустился). Атрибут `defer` тоже загружает скрипт параллельно, но откладывает его выполнение до тех пор, пока весь HTML-документ не будет полностью обработан (DOMContentLoaded). Кроме того, скрипты с defer сохраняют порядок относительно друг друга. Используя async, ставят независимые скрипты (например, аналитика), а defer – скрипты, которым нужно DOM и которые могут идти в определённом порядке.