IIFE - Okamžitě volatelný funkční výraz

AndreaAndrea

IIFE (Immediately Invoked Function Expression) je speciální technika, která se používá k vytvoření a okamžitému volání anonymní funkce.

Běžná funkce může být zavolána kdekoliv v celé aplikaci, jenže v některých případech můžeme chtít přesně tomuto stavu zabránit. Můžeme tím předejít konfliktům mezi různými částmi kódu, pokud určitou část obsahu souboru obalíme funkcí, která vytváří vlastní jmenný prostor a díky tomu se vyhneme potenciálním kolizím názvů mezi různými moduly a knihovnami JavaScriptu. Jedná se o stále častější praxi, kterou využívá mnoho populárních knihoven JavaScriptu (jQuery, Node.js atd.).

IIFE se volají pomocí závorek "()" okolo anonymní funkce a dalších závorek "()" na konci, které ji volají. Syntax IIFE je následující:

(function(){
		//kód, který se provede
})();

Argumenty

Můžete také předat argumenty do funkce pomocí závorek uvnitř kulatých závorek. Například:

(function(arg1, arg2) {
	// kód funkce s argumenty arg1 a arg2
})('foo', 'bar');

Příklad

V předchozích dekádách, kdy lidé používali jQuery knihovnu, tak bylo obvyklé používat $ jako alias objektu jQuery. Doporučovalo se veškerý jQuery kód zapouzdřit do IIFE.

(funkce($){
	// privátní rozsah a použití $ bez obav z konfliktu
})(jQuery);

Zapouzdření

IIFE se často používá k zapouzdření proměnných a funkcí. Tedy k oddělení kódu do samostatného bloku, který je izolován od zbytku kódu a má vlastní jmenný prostor.

Běžná funkce v Javascriptu vytvoří svůj vlastní scope a je dostupné skrz svůj identifikátor v celém kódu po deklaraci. IIFE na druhou stranu uzavírá scope uvnitř své vlastní funkce a tím zajišťuje soukromí proměnných a funkcí deklarovaných uvnitř IIFE.

IIFE jsou často používány v kombinaci s tzv. "pure funkcemi", což jsou funkce, které nemají žádné side efekty a vždy vracejí stejný výsledek pro dané vstupy.