type="module" の script は、async も defer も付けないときどう実行されるか?

編集

選択肢を選ぶと解説が表示されます

正解: C. 文書のパース完了後に実行される(defer 相当。module は既定で遅延)

type="module" のスクリプトは、処理が遅延される。クラシック script で defer を付けたときと同様に、文書のパースが終わってから評価される。

そのため module に対して defer 属性を付けても効果はない(既定で遅延するため)。一方 async を付けると、依存関係の取得も含めて準備ができ次第実行され、出現順の保証は弱くなる。

クラシック script の既定(async / defer / type="module" なし)はパーサブロッキングで、取得・実行が終わるまで HTML のパースが止まる。module の既定挙動とは違う。

#参考文献