Функции-коллбэки в JavaScript

Функции можно передавать параметрами в другие функции. Такие функции-параметры называются коллбэками (callback). Давайте посмотрим работу с ними на примере.

Пусть мы хотим сделать функцию, которая первым параметром будет принимать массив, а вторым - коллбэк, который будет применять к каждому элементу массива:

javascriptfunction each(arr, callback) {
  // тут какой-то код
}

Напишем реализацию нашей функции:

javascriptfunction each(arr, callback) {
  let result = [];
  
  for (let elem of arr) {
    result.push( callback(elem) ); // вызываем функцию-коллбэк
  }
  
  return result;
}

Наша функция each - универсальная. Это значит, что мы можем передавать в нее различные коллбэки, выполняя разные операции над массивами. При этом код нашей функции останется неизменным - будут меняться только передаваемые коллбэки.

Давайте для примера с помощью нашей функции возведем в квадрат каждый элемент какого-нибудь массива. Для этого передадим параметром соответствующий коллбэк:

javascriptlet result = each([1, 2, 3, 4, 5], function(num) {
  return num ** 2;
});

console.log(result);

А теперь возведем элементы массива в куб. Для этого в качестве параметра передадим уже другой коллбэк, выполняющий эту операцию:

javascriptlet result = each([1, 2, 3, 4, 5], function(num) {
  return num ** 3;
});

console.log(result);
Задание 1

Дан массив с числами. С помощью созданной нами функции each увеличьте каждый элемент в два раза.

Задание 2

Дан массив со строками. С помощью созданной нами функции each переверните символы каждой строки в обратном порядке.

Задание 3

Дан массив со строками. С помощью созданной нами функции each сделайте заглавным первый символ каждой строки.