scriptタグとモジュール/非モジュール

  • 古いブラウザには読ませない、モジュールロード構文 : <script type="module" src="パス"></script>
  • 新しいブラウザには読ませない、非モジュールロード構文 : <script nomodule src="パス"></script>
  • 新旧共通の非モジュールロード構文: <script src="パス"></script>

モジュールコードはモジュールオブジェクト=関数フレーム(スタックではなくヒープだが)内で実行される。そのフレームへの参照があるかぎりモジュールオブジェクトは生き残るが参照がないとモジュールオブジェクトは実行された後で消える。

非モジュールコードは、いわゆるトップレベルで実行されて、大域環境=大域オブジェクトのコンテキスト内で実行される。定義された関数・変数は、大域環境内に残る。

モジュールコードをインラインで書くこともできる。

<script type="module" >
 // モジュールコード
</script>