Что такое IIFE?
Функции
IIFE (Immediately Invoked Function Expression) — это функция, которая объявляется и сразу вызывается. Она создаёт изолированную область видимости.
Синтаксис
(function () {
const secret = 'скрыто';
console.log('выполнится сразу');
})();
// Со стрелкой
(() => {
// ...
})();Скобки вокруг функции превращают её в выражение (Function Expression), а () в конце — немедленно вызывают.
Зачем нужна (исторически)
- Изоляция переменных — до появления модулей и
let/constIIFE не давала переменным утечь в глобальную область. - Приватность — данные внутри недоступны снаружи (замыкание).
- Модульный паттерн:
const counter = (function () {
let count = 0;
return {
inc: () => ++count,
get: () => count,
};
})();
counter.inc(); // 1Актуальность сегодня
С появлением ES-модулей и блочной области let/const необходимость в IIFE резко снизилась — каждый модуль уже имеет свою область. Но паттерн всё ещё встречается, особенно в bund-коде и для немедленного async:
(async () => {
await init();
})();Коротко для собеседования
IIFE — функция, вызванная немедленно после объявления, для создания изолированной области и приватных данных. До ES-модулей — главный способ избежать глобальных переменных; сейчас чаще заменяется модулями.