function mojaFunkcja() {
//Tutaj jest kod
}
Znana z innych języków programowania
Pamiętacie deklarację funkcji z wykorzystaniem wartości?
var mojaFunkcja = function () {
//Tutaj jest kod
};
Nie jest to to samo, co zwrócenie wartości z funkcji.
var dodaj = function (a, b) {
return a + b;
};
Tak jak dowolna inne wyrażenie posiadające lub zwracające wartość, funkcję możemy przypisać do zmiennej.
Przy tej deklaracji nie musimy wstawiać nazwy funkcji pomiędzy słowem kluczowym function a nawiasem
Niespodzianka! Niczym nie różni się od zwykłego wywołania!
alert(dodaj(19, 25));
var przyjmijFunkcje = function (funkcja) {
return 'Przekazana funkcja zwróciła wartość ' + funkcja();
},
takaSobieFunkcja = function () {
var cos = 'Ko';
cos += 'py';
cos += 'tko';
return cos;
};
przyjmijFunkcje(takaSobieFunkcja);
Zwróćcie uwagę na brak nawiasów przy takaSobieFunkcja! Używamy jej jako zmiennej, nie wywołujemy!
Możecie również usłyszeć o tym pod nazwą "callback".
var wezCosPowiedz = function () {
alert('Mówię coś!');
};
A teraz to, na co wszyscy czekali
setTimeout(wezCosPowiedz, 1000);
(a teraz zgadnijcie co to robi :) )
Funkcje można przekazywać jak każdą inną zmienną, sama deklaracja funkcji jest jednocześnie jej literałem!
Dlatego możemy też zrobić tak:
setTimeout(function () { alert('Mówię coś!'); }, 1000);
Ale nie róbmy bo to robi bałagan w kodzie ;). Zawsze lepiej zadeklarować sobie funkcję w zmiennej i przekazać zmienną. Wtedy widać też jej nazwę.
Zwróćcie uwagę, że ta funkcja nie posiada nazwy. Taką funkcję nazywamy funkcją anonimową.
Funkcja anonimowa może zostać wywołana od razu przy deklaracji.
(function () { alert('Mówię coś!'); })();
Nazywamy ją wtedy funkcją natychmiastową.
Te rzeczy będziemy omawiać w przyszłości.