Transmiterea funcțiilor ca parametri în JavaScript

Funcțiile, similar cu numerele, șirurile de caractere și array-urile, pot fi transmise ca parametri către alte funcții.

Să analizăm mai detaliat cu un exemplu practic. Să presupunem că avem funcția test care primește doi parametri:

javascripttest(parametru1, parametru2);

Să transmitem către primul parametru al funcției test o funcție anonimă care returnează 1, iar către al doilea parametru - o funcție anonimă care returnează 2:

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

Codul prezentat mai sus nu este funcțional încă, deoarece nu am creat funcția în sine. Să o creăm:

javascriptfunction test(func1, func2) {
  
}

La definirea funcției am specificat doi parametri - func1 și func2. Acești parametri nu știu nimic despre ce va fi transmis în ei. Putem, de exemplu, să transmitem numere:

javascripttest(1, 2); // apelăm funcția

function test(func1, func2) {
  console.log(func1); // va afișa 1
  console.log(func2); // va afișa 2
}

Sau putem transmite funcții:

javascripttest(
  function() {return 1;}, // primul parametru
  function() {return 2;}  // al doilea parametru
);

function test(func1, func2) {
  console.log(func1); // va afișa 'function() {return 1;}'
  console.log(func2); // va afișa 'function() {return 2;}'
}

După cum vedeți, acum în consolă se afișează codul sursă al funcțiilor. Să facem ca în consolă să se afișeze rezultatele acestora. Pentru aceasta, să scriem paranteze rotunde la funcții:

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

function test(func1, func2) {
  console.log( func1() ); // va afișa 1
  console.log( func2() ); // va afișa 2
}

Să afișăm în consolă suma rezultatelor primei și celei de-a doua funcții:

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

function test(func1, func2) {
  console.log( func1() + func2() ); // va afișa 3
}
Задание 1

Creați o funcție test care primește ca parametri 3 funcții. Transmiteți către ea ca prim parametru o funcție care returnează 1, ca al doilea - o funcție care returnează 2, ca al treilea - o funcție care returnează 3. Afișați în consolă suma rezultatelor funcțiilor.