JavaScript · Senior · Запитання 35 з 75
Що може статися за циклічної залежності 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;- ✓Правильна відповідь:
ReferenceError: звернення доconstдо ініціалізації - 2Збирач автоматично об'єднає модулі в один, і все спрацює
- 3Обидва значення стануть
undefined, але помилки не буде
Пояснення
Модулі виконуються в порядку графа; за циклу один із них почне виконуватися, коли експорт іншого ще в TDZ. Із var вийшло б undefined, із const/let/класами - помилка. Рішення - винести спільний код у третій модуль або звертатися до імпорту ліниво всередині функцій.