IIFE
Em código real, você frequentemente precisa isolar variáveis para evitar conflitos com outros scripts — é aí que entra a IIFE. Bibliotecas como jQuery usavam esse padrão para criar escopo privado e expor apenas uma interface controlada. Dominar IIFE é essencial para entender modularização antes dos módulos do ES6 e para proteger dados internos de um módulo.
O PROBLEMA
Crie um módulo usando IIFE que encapsula variáveis privadas e expõe métodos públicos.
EXEMPLO
const modulo = (function() {
let privado = 0;
return { incrementar: () => ++privado, valor: () => privado };
})();SOBRE O CONCEITO
IIFE (Immediately Invoked Function Expression) é uma função que é executada no momento da definição. Ela cria um escopo fechado, onde variáveis como privado ficam inacessíveis de fora — isso é encapsulamento. O erro comum é esquecer os () finais, o que faz a expressão retornar a função em vez de seu resultado. Sem a invocação, modulo recebe a função, não o objeto com os métodos. Para expor uma interface pública, você precisa retornar um objeto com os métodos desejados, como incrementar e valor, que acessam a variável privada por meio de closures.
RESOLUÇÃO