Встречается на собеседованиях • сегодня

Как браузер решает циклические зависимости

Браузер разрешает циклические зависимости между модулями (например, в ES6) через механизм "live bindings". При загрузке модуля все экспорты инициализируются как ссылки (bindings), но значения могут быть еще не вычислены.

Пример:

javascript
// 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. Браузер создает пустые ссылки для a и b
  2. Заполняет их по мере выполнения кода
  3. Если модуль уже загружается, повторный импорт возвращает текущее (возможно, еще не инициализированное) значение

Важно: в момент первого обращения к зависимостям они могут быть undefined, поэтому нужно аккуратно проектировать архитектуру.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы