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ísticaMódulosIIFE
EscopoIsolado, por arquivoIsolado, por função
ExecuçãoDepende de importaçãoExecutado imediatamente
ReusabilidadeAlta, facilita a importaçãoBaixa, código específico
Uso ModernoPadrão em projetos grandesUtilizado 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.

Add a Comment

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *