¡Hola Marcia!
Gracias por tu pregunta.
El objetivo principal de las IIFE (Immediately Invoked Function Expression) es encapsular el código y evitar la contaminación del scope global. Esto significa que puedes definir variables y funciones dentro de una IIFE sin preocuparte de que colisionen con otras variables o funciones fuera de ella. Esto es especialmente útil cuando trabajas en proyectos grandes o cuando utilizas librerías o frameworks de terceros.
Un ejemplo práctico de uso de una IIFE es cuando quieres crear un módulo en JavaScript. Supongamos que estás desarrollando una aplicación de tareas y quieres encapsular toda la lógica relacionada con las tareas en un módulo separado. Puedes utilizar una IIFE para definir el módulo y todas las funciones relacionadas con las tareas dentro de él. De esta manera, evitas que el código del módulo se mezcle con el resto de tu aplicación.
Aquí tienes un ejemplo de cómo se vería una IIFE en este caso:
const tareaModule = (() => {
// Variables y funciones privadas del módulo
let tareas = [];
function agregarTarea(tarea) {
tareas.push(tarea);
}
function eliminarTarea(indice) {
tareas.splice(indice, 1);
}
// Retornar las funciones públicas del módulo
return {
agregarTarea,
eliminarTarea
};
})();
// Utilizar las funciones del módulo
tareaModule.agregarTarea('Hacer la compra');
tareaModule.agregarTarea('Lavar los platos');
tareaModule.eliminarTarea(0);
En este ejemplo, todas las variables y funciones dentro de la IIFE están encapsuladas dentro del módulo tareaModule
. Esto evita que colisionen con otras variables o funciones fuera del módulo.
Sin esto, todas las funciones, variables, etc, que escribes en tu código estarán accesibles de todos los archivos ".js" que están declarados dentro de tu index.html
e incluso dentro del HTML por medio de la tag <script></script>
, y caso escribas variables o funciones que se repiten en otro archivo, tendrás una colisión, y puede que sobrescriba el código sin que sea tu intención, causando así inconsistencias.
Espero que esto aclare tu duda sobre el objetivo y el uso de las IIFE. Si tienes alguna otra pregunta, no dudes en preguntar. ¡Estoy aquí para ayudarte!
¡Saludos!
Si este post te ayudó, por favor marca como solucionado ✓. ¡Continúa con tus estudios!