Функции за обратно извикване в JavaScript
Функции могат да се предават като параметри на други функции. Такива функции-параметри се наричат функции за обратно извикване (callback). Нека да разгледаме работата с тях на пример.
Да приемем, че искаме да направим функция, която първият параметър ще приема масив, а вторият - функция за обратно извикване, която ще прилага към всеки елемент на масива:
function each(arr, callback) {
// тук има някакъв код
}
Нека напишем реализацията на нашата функция:
function each(arr, callback) {
let result = [];
for (let elem of arr) {
result.push( callback(elem) ); // извикваме функцията за обратно извикване
}
return result;
}
Нашата функция each е универсална.
Това означава, че можем да предаваме в нея
различни функции за обратно извикване, изпълнявайки различни операции
върху масиви. При това кодът на нашата функция ще остане
непроменен - ще се променят само
предаваните функции за обратно извикване.
Нека за пример с помощта на нашата функция повдигнем на квадрат всеки елемент на някакъв масив. За целта ще предадем като параметър съответната функция за обратно извикване:
let result = each([1, 2, 3, 4, 5], function(num) {
return num ** 2;
});
console.log(result);
А сега нека повдигнем елементите на масива на куб. За целта като параметър ще предадем вече друга функция за обратно извикване, изпълняваща тази операция:
let result = each([1, 2, 3, 4, 5], function(num) {
return num ** 3;
});
console.log(result);
Даден е масив с числа. С помощта на създадената
от нас функция each увеличете всеки
елемент по два пъти.
Даден е масив със strings. С помощта на създадената
от нас функция each обърнете символите
на всеки string в обратен ред.
Даден е масив със strings. С помощта на създадената
от нас функция each направете главна
първата буква на всеки string.