JavaScriptの読み込み順序
コンソールで出力順番を確認することができます。
<script src="/assets/demo/js/road-order/defer.js" defer></script> // console.info('2: script defer');
<script src="/assets/demo/js/road-order/async.js" async></script> // console.info('任意のタイミング: script async');
<script>
window.addEventListener("load", () => console.info("4: laod"));
document.addEventListener("DOMContentLoaded", () => console.info("3: DOMContentLoaded"));
</script>
<script>
console.info("1: 何もなし");
</script>js処理順
★ = js実行
HTMLパース開始
↓
★通常script実行(パースを中断)
↓
HTMLパース再開
↓
DOM構築完了
↓
★defer script実行(記述順)
↓
★DOMContentLoadedイベント発火
↓
画像等のリソース読み込み継続
↓
★loadイベント発火
※(★async scriptは任意のタイミングで割り込み)