JavaScript · Senior · Pytanie 35 z 75
Co może się stać przy cyklicznej zależności między modułami ES?
// a.js
import { b } from "./b.js";
export const a = "A" + b;
// b.js
import { a } from "./a.js";
export const b = "B" + a;- ✓Poprawna odpowiedź:
ReferenceError: dostęp doconstprzed inicjalizacją - 2Bundler automatycznie połączy moduły w jeden i wszystko zadziała
- 3Obie wartości staną się
undefined, ale błędu nie będzie
Wyjaśnienie
Moduły wykonują się w kolejności grafu; przy cyklu jeden z nich zaczyna działać, gdy eksport drugiego jest jeszcze w TDZ. Z var dostalibyśmy undefined; z const/let/klasami - błąd. Rozwiązanie: wynieść wspólny kod do trzeciego modułu lub odwoływać się do importu leniwie wewnątrz funkcji.