IIFE – Immediately Invoked Function Expression – funkcja natychmiastowa w JavaScript

IIFE – Immediately Invoked Function Expression jest anonimową funkcją JavaScript wywoływaną natychmiast po jej odczytaniu. Takie funkcje ograniczają zakres użytych zmiennych/funkcji do funkcji natychmiastowej. Chroni to skrypt przed kolizjami nazw. Zobaczmy przykład:

// Pierwszy sposób wywołania IIFE
(function() {
    let data = 10;
    function bar(){}
}());

// Drugi sposób
(function() {
    let data = 10;
    function bar(){}
})(); // drobna różnica w wywołaniu, ale taki sam efekt

// Zmienne nie są dostępne poza funkcjami natychmiastowym
console.log(data); // Uncaught ReferenceError: data is not defined
console.log(bar); // ReferenceError: bar is not defined

Dodatkowo funkcja natychmiastowa może zwracać wartość np obiekt z udostępnionymi danymi z IIFE, czyli możemy emulować prywatne i publiczne funkcje/zmienne. Oczywiście o ile nie możemy używać klas ES6. Przykład:

const result = (function () {
let innerData = "inner value";
    function innerFunc() {
        console.log(innerData);            
    };


    return {data: 15, 
            str: "text",
            bar: innerFunc
        };
})();

// jest dostep do zwróconego obiektu
console.log(result); // Object { data: 15, str: "text", bar: innerFunc() }
console.log(result.bar()); // "inner value"

Na rozmowie rekrutacyjnej z JavaScript może pojawić się pytanie o IIFE, więc nie zapominajmy o tej ciekawej funkcji.
KW

Scroll to Top