IIFE (немедленно вызываемые функциональные выражения) в Javascript
В Javascript (JS) IIFE (выражение немедленно вызываемой функции) позволяет выполнять функции сразу после их создания.
Мы получаем следующие преимущества от IIFEs:
- Не засоряют глобальный объект переменными и функциями
- Это простой способ изолировать объявления переменных.
Ниже приведены примеры синтаксиса IIFE:
(function() {
/* */
})()
Вот еще один пример использования стрелочной функции =›:
(() => {
/* */
})()
/* */ указывает, где написана функция.
Глобальная проблема с объектами
Когда функция создается, она добавляется к глобальному объекту. Возьмем следующий пример кода:
function mult(x,y) { return x * y; }
Это простая функция под названием mult, которая принимает 2 параметра, переменные x и y. Затем он возвращает результат как произведение двух переменных.
Функция после создания добавляется в глобальный объект window(). Переменная, объявленная вне функции, также добавляется к глобальному объекту.
var counter;
Мы можем увидеть результат или вывод с помощью команды console.log().
console.log(window.mult) console.log(window.counter)
Когда вы объявили много глобальных переменных и функций, механизм JS освобождает выделенную память только тогда, когда глобальный объект теряет свои области видимости. Это приводит к неэффективному использованию памяти.
Еще одна проблема, которую это может создать, — это конфликты имен. Это загрязняет глобальный объект, засоряя его и делая программу менее эффективной.
IIFE как выражения
Мы также можем записывать функции в виде выражений. Использование круглых скобок делает функцию внутренне рассматриваемой как выражение. Функциональное выражение не требует имени, поэтому его не нужно добавлять в глобальный объект. Это позволяет выполнять без вызова имени.
Например, мы можем переписать код следующим образом:
let mult = (function(x,y){ return x * y; })(3, 8); console.log(mult);
Мы присваиваем вызов функции переменной с именем mult. Это возвращает ответ, который равен 24.
Теперь давайте создадим IIFE, используя общий синтаксис, переписав код:
(function(x,y){ return x * y; })(3,8);
Функция создается как выражение, которое выполняется немедленно, без предварительного добавления к глобальному объекту.
Синопсис
Используйте IIFE для выполнения функции как выражения, не требуя имени, что помогает избежать конфликтов, если функции имеют одно и то же имя из разных программ. Это сводит к минимуму добавление функций и переменных к глобальному объекту в памяти. Это делает выполнение быстрее и использование памяти более эффективным. Это влияет на то, как программа работает в критические моменты.