Вопросы к Поиску с Алисой
Атрибут defer в контексте JavaScript-скриптов указывает браузеру, что скрипт должен быть выполнен после того, как HTML-документ будет полностью разобран. habr.com
При использовании атрибута defer скрипт загружается в фоновом режиме, при этом не блокируя страницу. learn.javascript.ru myrusakov.ru Даже если файл скрипта будет полностью загружен ещё до того, как парсер закончит работу, он не будет выполнен до тех пор, пока парсер не отработает до конца. habr.com
Атрибут defer предназначен только для внешних скриптов и будет проигнорирован, если в теге <script> нет атрибута src. learn.javascript.ru
На практике атрибут defer используется для скриптов, которым требуется доступ ко всему DOM и/или важен их относительный порядок выполнения. learn.javascript.ru