IIFE

IIFE (от англ. Immediately Invoked Function Expression «немедленно вызываемое функциональное выражение») — это идиома JavaScript, в которой функция выполняется сразу после её определения. Такие функции также известны как самовыполняющиеся анонимные функции. Название IIFE было предложено Беном Альманом в его блоге.

js
// Обычное IIFE
(function () {
  // инструкции…
})();

// Вариант с использованием стрелочной функции
(() => {
  // инструкции…
})();

// Асинхронное IIFE
(async () => {
  // инструкции…
})();

Они состоят из двух основных частей:

  1. Функциональное выражение. Для корректного разбора его обычно нужно заключить в круглые скобки.
  2. Немедленный вызов функционального выражения. Возможна передача аргументов, хотя более распространены IIFE без них.

IIFE — это распространенный шаблон, используемый для выполнения произвольного количества инструкций в своей области видимости (и, возможно, возврата значения) в месте, требующем одного выражения. Они похожи на оператор запятой, но гораздо мощнее, так как он может выполнять только несколько выражений и, следовательно, не предоставляет возможности использовать локальные переменные или операторы управления потоком.

Варианты использования IIFE:

  • Избежание загрязнения глобального пространства имён путём создания новой области видимости.
  • Создание нового асинхронного контекста для использования оператора await в неасинхронном контексте.
  • Вычисление значений со сложной логикой, например, использование нескольких операторов в качестве одного выражения.

Смотрите примеры в описании функциональных выражений и ключевого слова async function.

Смотрите также