Funkcje zwrotne (callback) w JavaScript
Funkcje można przekazywać jako parametry do innych funkcji. Takie funkcje-parametry nazywają się funkcjami zwrotnymi (callback). Spójrzmy na ich działanie na przykładzie.
Załóżmy, że chcemy stworzyć funkcję, która pierwszym parametrem będzie przyjmować tablicę, a drugim - funkcję zwrotną, która będzie aplikowana do każdego elementu tablicy:
function each(arr, callback) {
// tutaj jakiś kod
}
Napiszmy implementację naszej funkcji:
function each(arr, callback) {
let result = [];
for (let elem of arr) {
result.push( callback(elem) ); // wywołujemy funkcję zwrotną
}
return result;
}
Nasza funkcja each jest uniwersalna.
Oznacza to, że możemy przekazywać do niej
różne funkcje zwrotne, wykonując różne operacje
na tablicach. Przy tym kod naszej funkcji pozostanie
niezmieniony - zmieniać się będą tylko
przekazywane funkcje zwrotne.
Spójrzmy dla przykładu, jak za pomocą naszej funkcji podnieść do kwadratu każdy element jakiejś tablicy. W tym celu przekażemy odpowiednią funkcję zwrotną jako parametr:
let result = each([1, 2, 3, 4, 5], function(num) {
return num ** 2;
});
console.log(result);
A teraz podnieśmy elementy tablicy do sześcianu. W tym celu jako parametr przekażemy już inną funkcję zwrotną, wykonującą tę operację:
let result = each([1, 2, 3, 4, 5], function(num) {
return num ** 3;
});
console.log(result);
Dana jest tablica z liczbami. Za pomocą stworzonej
przez nas funkcji each zwiększ każdy
element dwukrotnie.
Dana jest tablica z ciągami znaków. Za pomocą stworzonej
przez nas funkcji each odwróć znaki
każdego ciągu w odwrotnej kolejności.
Dana jest tablica z ciągami znaków. Za pomocą stworzonej
przez nas funkcji each zrób wielką
pierwszą literę każdego ciągu.