IIFE (Immediately Invoked Function Expression) - это функция, которая вызывается немедленно после ее определения. То есть, это функция, которая выполняется сразу же при загрузке страницы или скрипта, без явного вызова.
Синтаксис IIFE выглядит следующим образом:
;(function () {
// код функции
})()
Внешние круглые скобки нужны для того, чтобы обозначить, что это функциональное выражение, а не объявление функции. Внутренние круглые скобки вызывают функцию немедленно после ее определения.
IIFE позволяет создавать локальную область видимости для переменных и функций, которые не будут доступны извне. Это особенно полезно, когда нужно избежать конфликтов имён при использовании большого количества библиотек и скриптов на одной странице.
Пример IIFE:
;(function () {
var message = "Hello, World!"
console.log(message)
})()
В этом примере мы создали IIFE, которая определяет переменную “message” и выводит ее значение в консоль. При выполнении этого кода, функция вызывается немедленно и выводит сообщение “Hello, World!” в консоль.
IIFE также может быть использована для создания закрытых модулей, которые позволяют скрывать реализацию и предоставлять публичный интерфейс для работы с модулем.
var counter = (function () {
var count = 0
return {
increment: function () {
count++
},
decrement: function () {
count--
},
getCount: function () {
return count
},
}
})()
console.log(counter.getCount()) // Выводит 0
counter.increment()
console.log(counter.getCount()) // Выводит 1
counter.decrement()
console.log(counter.getCount()) // Выводит 0
В этом примере мы создали IIFE, которая возвращает объект с тремя методами: increment(), decrement() и getCount(). Методы increment() и decrement() увеличивают и уменьшают переменную “count”, а метод getCount() возвращает текущее значение “count”. После определения IIFE мы сохраняем объект в переменной “counter” и можем использовать его методы для работы с переменной “count”.