IIFE: Expresiones de función ejecutadas inmediatamente

Ejecuta funciones inmediatamente después de definirlas para encapsular código dentro de un ámbito distinto al global.

iife

Las Expresiones de Función Ejecutadas Inmediatamente (IIFE, por sus siglas en inglés) son un patrón en JavaScript que permite definir y ejecutar funciones al instante. Un ejemplo:

(function() {
console.log("Hola desde una IIFE");
})();

Este pequeño truco puede parecer innecesario al principio, pero tiene una explicación interesantes.

¿Por qué usar una IIFE?

En JavaScript, las variables definidas en el ámbito global pueden ser sobrescritas accidentalmente, lo que puede causar problemas en aplicaciones grandes. Las IIFE ayudan a:

  • Encapsular código: Todo lo que está dentro de la IIFE no afecta al ámbito global.
  • Ejecutar código de inmediato: Útil cuando se necesita inicializar algo sin exponer variables o funciones al resto del código.
  • Evitar conflictos de nombres: En proyectos con múltiples scripts, encapsular lógica en una IIFE reduce la probabilidad de colisiones de nombres.

Sintaxis de una IIFE

Una IIFE es una función anónima envuelta entre paréntesis y ejecutada inmediatamente:

(function() {
// Inmmediately Invoked Function Expression (IIFE)
console.log("IIFE en JavaScript");
})();

Otra forma válida es con una arrow function:

(() => {
console.log("IIFE con arrow function");
})();

Pasando parámetros a una IIFE

Si la función necesita argumentos, se pueden pasar de esta manera:

(function(nombre) {
console.log("Hola, " + nombre);
})("Marco");

También funciona con arrow functions:

((nombre) => {
console.log(`Hola, ${nombre}`);
})("Michael");

Uso de IIFE con async/await

Las IIFE también pueden ser asíncronas, lo que permite usar await dentro de ellas sin necesidad de definir una función separada:

(async () => {
const respuesta = await fetch("https://jsonplaceholder.typicode.com/todos/1");
const datos = await respuesta.json();
console.log(datos);
})();

Conclusión

Las IIFE en JavaScript han sido una herramienta clave para evitar la contaminación del ámbito global y organizar código de manera estructurada. Aunque su uso ha disminuido con la evolución del lenguaje, siguen siendo una opción válida en escenarios específicos. Si alguna vez necesitas ejecutar una función de inmediato para protegerte del ámbito global puedes usar este recurso.