JavaScript · Senior · Frage 35 von 75
Was kann bei einer zirkulären Abhängigkeit zwischen ES-Modulen passieren?
// a.js
import { b } from "./b.js";
export const a = "A" + b;
// b.js
import { a } from "./a.js";
export const b = "B" + a;- 1
ReferenceError: Zugriff auf einconstvor der Initialisierung - 2Beide Werte werden
undefined, aber einen Fehler gibt es nicht - 3Der Bundler führt die Module automatisch zusammen, und es funktioniert
Antwort zeigen
Richtige Antwort: ReferenceError: Zugriff auf ein const vor der Initialisierung
Erklärung
Module werden in der Reihenfolge des Graphen ausgeführt; bei einem Zyklus beginnt eines zu laufen, während der Export des anderen noch in der TDZ liegt. Mit var bekäme man undefined, mit const/let/Klassen einen Fehler. Abhilfe: gemeinsamen Code in ein drittes Modul verschieben oder den Import träge innerhalb von Funktionen nutzen.