Aprende en 2 minutos: IIFE – Immediately Invoked Function Expression

Las Expresiones de Funciones Inmediatamente Invocadas o IIFE para acortar, es como se llama a las funciones en Javascript que se mandan a llamar aparentemente en el mismo momento en el que son declaradas.

Basandose en esa explicación tu podrías pensar que ya es algo que has usado antes:

function playMusic() {
    console.log('Starting playlist')
}

playMusic()

Pero ¡No!

Esto es una declaración y llamada cualquiera. Nada especial.

Una IIFE, se ve así:

(function playMusic() {
    console.log('Starting playlist')
})()

Es un tema bastante simple y un concepto esencial para aprender si quieres impresionar a los demás con tus conocimientos de Javascript.

Dicho esto. Hablemos de la vida la real de la vida. ¿En qué momento te conviene utilizar una IIFE por sobre una declaración e invocación normal?

Bueno, IIFE es una forma de ayudar a encapsular variables declaradas con var, permitiendo controlar que algunas sean públicas o privadas. Sin embargo esa funcionalidad se puede obtener también de manera fácil y sencilla con let/const.

Así que en mi opinión, hoy en el año 2022 (y de hecho desde la salida de Ecmascript 6), la respuesta es…

Nunca.

La única razón válida para trabajar con una es que estes trabajando con una base de código que ya la tuviera implementada.


Claro algunos argumentarán que utilizar funciones nombradas solo debe de hacerse cuando van a ser llamadas más de una vez fuera del código. “Es buena práctica no llenar la memoria de nombres innecesarios” dirán.

A esto mi respuesta es simple. A la hora de programar siempre tenemos que hacer una elección. Le vas a dar prioridad a la claridad o a la optimización del código.

Si tu proyecto es lo suficientemente grande y complejo como para que el simple hecho de declarar unas funciones le afecte negativamente entonces es un monstruo y deberías dividirlo. De otra manera deberías favorecer la claridad, porqué al final solo le estas haciendo la vida mas dificíl a los desarrolladores a cambio de ni siquiera 1 ms de eficiencia.

Pero como con cualquier otro concepto, es bueno conocer que IIFE existe y que se puede usar. Yo no pienso hacerlo, pero tampoco me voy a pelear si tu decides utilizarlo.