IIFE — функция, которая объявляется и сразу вызывается. Классический способ создать изолированную область видимости до появления модулей и let/const.
(function () {
var secret = 42;
console.log(secret);
})();
// или
(() => {
const secret = 42;
})();
Зачем использовали
не загрязнять глобальную область (var иначе «протекал»);
создать замыкание с приватными переменными;
зафиксировать значения в цикле (исторически, до let);
модульный паттерн «revealing module».
const counter = (function () {
let n = 0;
return {
inc: () => ++n,
value: () => n,
};
})();
Сейчас
В современном коде чаще ES-модули и блочная область { }. IIFE всё ещё встречается в бандлах, сниппетах и когда нужно изолировать var/побочные эффекты в одном выражении.
На собеседовании: синтаксис (function(){...})(), зачем scope, отличие от обычного объявления функции.
Что такое IIFE (Immediately Invoked Function Expression)? · Sobeso