IIFE – это функция, которая объявляется и вызывается одновременно. Вы создаете их, используя анонимные функции и включающие функцию в круглых скобках () . Затем вы можете вызвать их, просто вызывая выражение сразу с последующей парой круглых скобок.
(function(name){ // function expression enclosed in ()
console.log(`Hello ${name}`); // Hello Parwinder
})("Parwinder"); // Immediately called by using () in the end. Yes we can pass arguments
Сразу же выражения функций полезны в:
- Предотвращение переменной подъема изнутри блоков
- Не загрязняя глобальную область
- Позволяя нам получать доступ к публичным методам при сохранении конфиденциальности для переменных, определенных в IIFE
Короче говоря, немедленно вызываемое выражение функции является отличным способом защиты объема вашей функции и переменных в нем.
Только потому, что я написал вышеуказанную функцию, используя Функция ключевое слово не означает, что вы должны. С помощью популярности ES6 вы можете использовать функции стрелки.
(name => {
console.log(`Hello ${name}`); // Hello Parwinder
})("Parwinder");
Другим способом создания IIFE является использованием оператора отрицания ! . Когда мы используем ключевое слово функции, то, что мы создаем – это объявление функции.
function myName() {
return "Parwinder";
}
console.log(myName()); // Parwinder
Вы должны вызвать объявление до возвращения в конце концов. Если мы префикс функции с отрицанием, она становится выражением функции.
!function myName() {
return "Parwinder";
}
Но это покое не ссылается! Он только превратил функцию в выражение.
Мы должны использовать () вызвать метод.
!function myName() {
console.log("Parwinder"); // Parwinder
}();
Та-да! Вместо того, чтобы создать IIFE, использую (Функция => {}) () Мы сделали это, используя ! Функция => {} () Отказ Нет необходимости обернуть наш функциональный блок в () Отказ
🚨 Вы видите, что я изменил оператор возврата в мой последний пример к Console.log? Это нарочно. IIFE всегда будет возвращаться undefined Отказ Если мы используем оператор отрицания для создания IIFE, он вернет правда потому что ! undefined это правда Отказ
Оригинал: “https://dev.to/bhagatparwinder/iife-immediately-invoked-function-expressions-49c5”