Передача функций параметрами в JavaScript

Функции, подобно числам, строкам и массивам, могут передаваться параметрами в другие функции.

Рассмотрим подробнее на практическом примере. Пусть у нас есть функция test, принимающая два параметра:

javascripttest(параметр1, параметр2);

Давайте в первый параметр функции test передадим анонимную функцию, возвращающую 1, а во второй параметр - анонимную функцию, возвращающую 2:

javascripttest(
  function() {return 1;},
  function() {return 2;}
);

Код, приведенный выше, пока не рабочий, так как мы не создали саму функцию. Сделаем это:

javascriptfunction test(func1, func2) {
  
}

При определении функции мы указали два параметра - func1 и func2. Эти параметры ничего не знают про то, что в них будет передаваться. Можем, например, передать числа:

javascripttest(1, 2); // вызываем функцию

function test(func1, func2) {
  console.log(func1); // выведет 1
  console.log(func2); // выведет 2
}

А можем передать функции:

javascripttest(
  function() {return 1;}, // первый параметр
  function() {return 2;}  // второй параметр
);

function test(func1, func2) {
  console.log(func1); // выведет 'function() {return 1;}'
  console.log(func2); // выведет 'function() {return 2;}'
}

Как вы видите, теперь в консоль выводится исходный код функций. Давайте сделаем так, чтобы он выводил их результаты. Для этого напишем функциям круглые скобки:

javascripttest(
  function() {return 1;},
  function() {return 2;}
);

function test(func1, func2) {
  console.log( func1() ); // выведет 1
  console.log( func2() ); // выведет 2
}

Давайте выведем в консоль сумму результатов первой и второй функции:

javascripttest(
  function() {return 1;},
  function() {return 2;}
);

function test(func1, func2) {
  console.log( func1() + func2() ); // выведет 3
}
Задание 1

Сделайте функцию test, параметрами принимающую 3 функции. Передайте в нее первым параметром функцию, возвращающую 1, вторым - функцию, возвращающую 2, третьим - функцию, возвращающую 3. Выведите в консоль сумму результатов функций.