モジュールをインポートするとは、インポート ステートメントと同じ行にモジュールのコードを埋め込むことを意味しますか?
P粉269847997
P粉269847997 2023-09-16 18:25:30
0
1
458

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

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

リーリー

b.js

リーリー

MDN の説明:

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

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

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

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

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

P粉269847997
P粉269847997

全員に返信(1)
P粉165823783

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

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

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート