PassFront
  1. PassFront
  2. База знаний
  3. Функции

Что такое IIFE?

Функции

IIFE (Immediately Invoked Function Expression) — это функция, которая объявляется и сразу вызывается. Она создаёт изолированную область видимости.

Синтаксис

(function () {
  const secret = 'скрыто';
  console.log('выполнится сразу');
})();

// Со стрелкой
(() => {
  // ...
})();

Скобки вокруг функции превращают её в выражение (Function Expression), а () в конце — немедленно вызывают.

Зачем нужна (исторически)

  • Изоляция переменных — до появления модулей и let/const IIFE не давала переменным утечь в глобальную область.
  • Приватность — данные внутри недоступны снаружи (замыкание).
  • Модульный паттерн:
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-модулей — главный способ избежать глобальных переменных; сейчас чаще заменяется модулями.

Другие вопросы раздела