Importer un module signifie-t-il intégrer le code du module sur la même ligne que l'instruction d'importation ?
P粉269847997
P粉269847997 2023-09-16 18:25:30
0
1
332

De ReferenceError : impossible d'accéder à la déclaration lexicale 'X' avant l'initialisation - JavaScript MDN, voici un exemple d'importation invalide :

a.js(module d'entrée) :

import { b } from "./b.js"; export const a = 2;

b.js

import { a } from "./a.js"; console.log(a); // ReferenceError: Cannot access 'a' before initialization export const b = 1;

MDN explique :

Dans cet exemple, la variable importéeaest accédée, mais pas initialisée, car l'évaluation dea被访问,但是未初始化,因为a.js的评估被当前模块b.jsest bloquée par l'évaluation du module actuel

.

a.jsJe comprends que cela signifie qu'importer un module signifie intégrer le code du module dans la ligne de l'instruction d'importation. Autrement dit, lors de la compilation,

devient comme ceci :

console.log(a); // ReferenceError: Cannot access 'a' before initialization const b = 1; const a = 2;
a.jsCette compréhension est-elle correcte ? Je ne vois pas cela expliqué dans import - JavaScript MDN. En raison de la promotion variable, je ne sais pas comment tester cela car la réorganisation des lignes dans

ne change pas le résultat.
P粉269847997
P粉269847997

répondre à tous (1)
P粉165823783

Le code des modules importés n'est pas simplement intégré (« collé ») mais existe dans une fermeture distincte. Bien qu'il s'agisse certainement d'une simplification excessive, je compare les modules aux fonctions et auxexport语句与其returninstructions :

function a_js() { var b = b_js(); // 不必要的行 return 2; } function b_js() { var a = a_js(); console.log(a); return 1; }
 

Étant donné que les modules s'importent les uns les autres, ils ne peuvent pas être chargés dans n'importe quel ordre : appuyer sur n'importe quel bouton entraînera une erreur "Taille maximale de la pile d'appels dépassée".

Mais si vous supprimez les lignes inutiles (remplissez simplement une variable locale qui est ensuite supprimée), cela fonctionnera.

    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!