Оба метода гарантируют что скрипт загрузится только после того когда загрузится весь html документ. Какая между ними разница кроме той, что $(document).ready пишется в js файле, а defer в атрибуде?
Примитивный пример: Есть скрипт с алертом, подключенный вот так <script src="js.js" defer></script> с defer. При обновлении сперва появляется алерт и только потом контент страницы. Почему так ведь defer подразумевает сперва загружать содержимое страницы и только потом скрипт?