Podręcznik
Podstawy Node.js
Funkcje
W języku JavaScript funkcje można tworzyć za pomocą instrukcji rozpoczynających się od słowa function:
return 2 / (1/x + 1/y);
}
Taka instrukcja zawiera:
- nazwę funkcji; w powyższym przykładzie: harmonicMean;
- listę argumentów wejściowych funkcji, zawartych w nawiasach okrągłych i oddzielonych przecinkami; w powyższym przykładzie: (x, y);
- instrukcje, które mają być wykonywane po wywołaniu funkcji, zapisane wewnątrz nawiasów klamrowych { }.
Wynik wyrażenia poprzedzonego słowem return będzie wartością zwracaną przez funkcję.
Wyrażenia funkcyjne
Funkcje można również tworzyć za pomocą wyrażeń funkcyjnych (ang. function expressions):
return 2 / (1/x + 1/y);
}
W powyższym przykładzie, wyrażenie po prawej stronie znaku = jest wyrażeniem funkcyjnym. Wynik tego wyrażenia – funkcja wyznaczająca średnią harmoniczną – jest zapisywany do stałej o nazwie harmonicMean.
Funkcja stanowiąca wynik wyrażenia funkcyjnego sama w sobie nie ma nazwy – jest tzw. funkcją anonimową (ang. anonymous function). W powyższym przykładzie nazwę ma natomiast zmienna harmonicMean, do której zapisywany jest wynik wyrażenia funkcyjnego.
Notacja ze strzałką
Funkcje anonimowe można definiować za pomocą tzw. strzałkowych wyrażeń funkcyjnych (ang. arrow function expressions). W porównaniu ze zwykłymi wyrażeniami funkcyjnymi, wyrażenia strzałkowe:
- są krótsze, m.in. nie zawierają słowa function;
- mają jednak pewne ograniczenia (por. MDN Web Docs).
Strzałkowe wyrażenia funkcyjne mają zwykle następującą postać:
albo:
[jedna_lub_więcej_instrukcji]
}
Lista argumentów może być pusta, może zawierać jeden argument, albo może zawierać kilka argumentów, oddzielonych przecinkami:
(arg1) => [zwracane_wyrażenie]
(arg1, arg2, arg3) => [zwracane_wyrażenie]
W przypadku braku nawiasów klamrowych, wyrażenie znajdujące się po prawej stronie symbolu => jest tym, co w „klasycznej” definicji funkcji byłoby poprzedzone słowem return.
Przykładowo, funkcję służącą do obliczania średniej harmonicznej można byłoby zrealizować w następujący sposób:
Istotne jest to, że strzałka jest „podwójna”, tzn. =>, a nie ->.
Przekazywanie funkcji
W języku JavaScript funkcje można przekazywać jako argumenty wejściowe do innych funkcji. Poniższy przykład przedstawia funkcję służącą do wyznaczania przybliżonej wartości pierwszej pochodnej zadanej funkcji matematycznej. Jako argumenty wejściowe przyjmuje ona:
- inną funkcję – tę, którą chcemy zróżniczkować;
- punkt, w którym chcemy wyznaczyć wartość pochodnej.
dx = 0.01;
return (f(x + dx) - f(x - dx)) / (2 * dx);
}
Przybliżoną wartość pochodnej funkcji f(x) = 2x² + 3 w punkcie x = 1 można wówczas policzyć i wyświetlić w następujący sposób:
return 2*x*x + 3;
}
console.log(gradient(myFunction, 1));
Funkcję, której pochodną chcemy policzyć, można byłoby też przekazać do funkcji gradient w postaci anonimowej, korzystając z wyrażenia funkcyjnego:
console.log(z);
Literatura