Módulos circulares
Em projetos JavaScript reais, especialmente com divisão em múltiplos arquivos, é comum que dois módulos tentem se importar mutuamente. Isso quebra o fluxo de inicialização e pode resultar em valores undefined inesperados. Dominar a identificação e remoção de dependências circulares evita bugs difíceis de rastrear e mantém a arquitetura do código saudável.
O PROBLEMA
Demonstre problema de importação circular e refatore para remover.
EXEMPLO
// Problema: a.js → b.js → a.js // Solução: c.js com dependência compartilhada
SOBRE O CONCEITO
Uma importação circular acontece quando o módulo A importa de B, e B importa de A (direta ou indiretamente). O JavaScript, ao executar os módulos, topa com essa dependência e pode retornar um objeto incompleto ou undefined para a dependência que ainda não foi inicializada. O erro comum é não perceber que a circularidade existe, especialmente quando ela ocorre em cadeia (A→B→C→A). Para refatorar, extraia a dependência compartilhada em um terceiro módulo (C) que ambos importam, removendo a necessidade de importação mútua. Como o exercício permite export, import, function e const, mas proíbe require, loops e try/catch, a solução deve usar export e import estáticos e reestruturar o código movendo as funcionalidades comuns para um módulo separado.
RESOLUÇÃO