Deklaracja funkcji a wyrażenie funkcyjne w JavaScripcie

Deklaracja funkcji a wyrażenie funkcyjne w JavaScripcie

Funkcję w JavaScripcie zadeklarujesz na dwa sposoby: przez wyrażenie funkcyjne albo przez deklarację funkcji. Pierwsze da się zapisać w zmiennej, drugą wywołasz w dowolnym miejscu kodu. Najczęściej spotyka się deklaracje funkcji, sam też znałem głównie je, ale warto wiedzieć, że jest jeszcze druga droga.

Ten artykuł może być aktualizowany

Deklaracja funkcji

W przeciwieństwie do wyrażenia funkcyjnego funkcję utworzoną przez deklarację można wywołać, zanim jeszcze zostanie zadeklarowana: interpreter wyszukuje zmienne i deklaracje funkcji, zanim przejdzie do reszty skryptu. Zadeklarowaną funkcję wywołasz więc dalej w kodzie, ale żeby w ogóle dało się ją wywołać, musisz nadać jej nazwę.

javascript
function addition(a, b) {
    return a + b;
};
var calcul= addition(2, 5) ;

Wyrażenie funkcyjne

Wyrażenie funkcyjne to funkcja utworzona, zapisana i traktowana jak zmienna. Zwykle nie ma nazwy i dlatego mówi się o funkcjach anonimowych. Funkcja siedzi w zmiennej i wywołasz ją jak każdą inną. Pamiętaj jednak, że zostaje przetworzona dopiero wtedy, gdy interpreter przeglądarki dojdzie do jej deklaracji. Nie wywołasz jej więc wcześniej, a każdy kod, który wykona się do tego miejsca, może zmienić to, co dzieje się w środku funkcji.

javascript
var addition = function(a, b) {
    return a + b;
};
var calcul = addition(2, 5) ;

Immediately-Invoked Function Expression

Wszystkie zmienne zadeklarowane w takiej funkcji anonimowej, nazywanej zwykle IIFE, są odizolowane od zmiennych o tych samych nazwach z innych skryptów. Odpowiada za to zasięg zmiennych, po angielsku scope. Oto przykład IIFE.

javascript
var addition = (function(){
  var a = 10;
    var b = 20;
    return a + b;
}());
  • Nawiasy otaczające funkcję gwarantują, że zostanie potraktowana jak wyrażenie.
  • Para nawiasów na końcu () mówi interpreterowi, żeby wywołał funkcję natychmiast.

Najczęściej sięga się po ten wzorzec na starcie nowego skryptu, żeby odizolować cały jego kod.

Kiedy używać anonimowych wyrażeń funkcyjnych?

Nadają się do kodu, który ma wykonać się raz, a nie być wywoływany wielokrotnie przez inne części skryptu. Anonimowego wyrażenia funkcyjnego użyjesz:

  • żeby uniknąć konfliktów między dwoma skryptami, które używają tych samych nazw zmiennych co nasz.
  • jako argumentu przy wywołaniu funkcji (do wyliczenia jej wartości);
  • żeby wykonać zadanie po wystąpieniu zdarzenia,
  • żeby przypisać wartość właściwości obiektu.

···

JavaScript

Damien Flandrin Web developer od 2010 roku, twórca Gekkode i Email Impact. Każdy artykuł jest sprawdzany na prawdziwym projekcie przed publikacją. Kontakt
Newsletter

Nowe testy, poradniki i projekty — e-mailem.

Powtarzalne testy, wersjonowany kod, datowane wyniki. Nigdy spamu.