Módulos ou Funções imediatamente invocadas (IIFE) – Javascript
1. Módulos
Módulos são uma maneira de organizar e separar o código em diferentes arquivos ou partes, evitando poluição do escopo global. Cada módulo possui seu próprio escopo, o que ajuda a manter variáveis e funções isoladas e privadas, evitando conflitos de nomes.
Exemplo com Módulo (ES6):
arquivo.js
código// Definindo uma função no módulo
export function saudacao(nome) {
return `Olá, ${nome}!`;
}
index.js
código// Importando a função de outro módulo
import { saudacao } from './arquivo.js';
console.log(saudacao('Hugo')); // Saída: Olá, Hugo!
Vantagens dos Módulos:
- Isolamento: Variáveis e funções definidas em um módulo não são acessíveis globalmente, evitando conflitos.
- Reusabilidade: Facilitam o uso de código em diferentes partes do projeto ou em outros projetos.
Nota: No Node.js, o sistema de módulos utiliza require
e module.exports
. Em navegadores modernos, é possível usar import
e export
diretamente.
2. IIFE (Immediately Invoked Function Expression)
IIFE é uma função em JavaScript que é definida e executada imediatamente. Ela cria um escopo isolado para suas variáveis, evitando que sejam acessíveis globalmente. É útil para evitar conflitos de nomes e proteger o escopo de variáveis temporárias.
Exemplo de IIFE:
código(function() {
const mensagem = 'Olá, Mundo!';
console.log(mensagem);
})();
// Tentando acessar 'mensagem' fora da IIFE
console.log(mensagem); // Erro: mensagem não está definida
Vantagens da IIFE:
- Escopo isolado: Variáveis definidas dentro da IIFE não vazam para o escopo global.
- Execução imediata: Útil para inicializar código logo que ele é definido.
Diferença entre Módulos e IIFE
Característica | Módulos | IIFE |
---|---|---|
Escopo | Isolado, por arquivo | Isolado, por função |
Execução | Depende de importação | Executado imediatamente |
Reusabilidade | Alta, facilita a importação | Baixa, código específico |
Uso Moderno | Padrão em projetos grandes | Utilizado em scripts menores ou antigos |
Ambos são usados para evitar poluição do escopo global, mas os módulos são a forma moderna e recomendada, especialmente em projetos maiores.