Actualmente estoy estudiando para ser desarrollador web, front-end y back-end, y para ayudar a mantener mi código organizado, sugieren usar IIFE donde sea necesario, si tuviera que usar más de un IIFE, ¿podría llamar a una función o variable de un IIFE en otro IIFE? ? ¿O solo es accesible dentro del IIFE en el que se encuentra? usando Javascript por cierto.
Solo es posible acceder a cosas a través de IIFE si uno de ellos expone deliberadamente algunas de sus partes globalmente. Por ejemplo:
const myLibrary = (() => { // lots of code return { fn: () => console.log('running fn') }; })(); (() => { myLibrary.fn(); })();o
(() => { // lots of code window.myLibrary = { fn: () => console.log('running fn') }; })(); (() => { myLibrary.fn(); })();La forma habitual de resolver este problema es colocar todo el script en un solo IIFE.
(() => { const myLibrary = { fn: () => console.log('running fn') }; myLibrary.fn(); })();Para código profesional, en cualquier cosa que no sean fragmentos de juguete, recomendaría usar módulos ES6 y un paquete como Webpack, que le permite escribir código en archivos separados, importar y exportar desde otros archivos según sea necesario, y luego junta todo en un script único ("empaquetado") (compuesto por un enorme IIFE) que puede poner en su página.