Подаване на функции като параметри в 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. Изведете в конзолата сумата от резултатите на функциите.