Причина, по которой вы получаете «лучшую» производительность, заключается в том, что страница будет проанализирована до того, как она дойдет до JavaScript в конце документа, а после разбора раздела начнется рендеринг. Загружая JavaScript в конце документа, вы позволяете использовать основной жесткий код в HTML и CSS, прежде чем добавлять функциональность с помощью JavaScript. Это дает пользователю иллюзию «более быстрого времени загрузки» для вашей страницы.
Предостережение здесь - любой JavaScript, который вы хотите использовать, который вызовет внешние библиотеки, должен произойти после тегов скриптов библиотек. Это не проблема, если вы собрали весь свой код вместе в свой собственный файл, но это вызовет проблемы для встроенных скриптов, которые вы разбросали по странице.
Это часть того, почему такое поведение не рекомендуется в производственных приложениях, а остальное связано с возможностью максимального сжатия содержимого скрипта с помощью gzip и т. Д.