ホームページ  >  に質問  >  本文

モジュールをインポートするとは、インポート ステートメントと同じ行にモジュールのコードを埋め込むことを意味しますか?

参照エラー: 初期化前に字句宣言 'X' にアクセスできません - JavaScript | MDN から、無効なインポートの例があります:

a.js (エントリモジュール):

リーリー

b.js

リーリー

MDN の説明:

この例では、インポートされた変数 a がアクセスされますが、初期化されません。これは、a.js の評価が現在のモジュール b.js## によって評価されるためです。 # ブロック。

これは、モジュールをインポートするということは、モジュールのコードを import ステートメントの行に埋め込むことを意味すると理解しています。つまり、

a.js はコンパイルすると次のようになります: リーリー

この理解は正しいですか?これについては、インポート - JavaScript | MDN で説明されていません。変数の巻き上げが原因で、

a.js の行を並べ替えても結果が変わらないため、これをテストする方法がわかりません。

P粉269847997P粉269847997399日前388

全員に返信(1)返信します

  • P粉165823783

    P粉1658237832023-09-17 00:53:49

    インポートされたモジュールのコードは、単に埋め込まれる (「貼り付けられる」) だけでなく、別のクロージャに存在します。これは確かに単純化しすぎですが、export ステートメントとその return ステートメントを比較して、モジュールを関数と比較しました。

    リーリー リーリー

    モジュールは相互にインポートするため、任意の順序でロードすることはできません。いずれかのボタンを押すと、「最大呼び出しスタック サイズを超えました」エラーが発生します。

    ただし、不要な行を削除すると (ローカル変数を設定するだけで、その後破棄されます)、機能します。

    返事
    0
  • キャンセル返事