Overføring av funksjoner som parametere i JavaScript

Funksjoner, på samme måte som tall, strenger og matriser, kan overføres som parametere til andre funksjoner.

La oss se nærmere på et praktisk eksempel. Anta at vi har en funksjon test som tar to parametere:

javascripttest(parameter1, parameter2);

La oss i den første parameteren til funksjonen test overføre en anonym funksjon som returnerer 1, og i den andre parameteren - en anonym funksjon som returnerer 2:

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

Koden ovenfor er ikke funksjonell ennå, siden vi ikke har opprettet selve funksjonen. La oss gjøre det:

javascriptfunction test(func1, func2) {
  
}

Ved definisjonen av funksjonen spesifiserte vi to parametere - func1 og func2. Disse parameterne vet ingenting om hva som vil bli overført til dem. Vi kan for eksempel overføre tall:

javascripttest(1, 2); // kaller funksjonen

function test(func1, func2) {
  console.log(func1); // vil skrive ut 1
  console.log(func2); // vil skrive ut 2
}

Eller vi kan overføre funksjoner:

javascripttest(
  function() {return 1;}, // første parameter
  function() {return 2;}  // andre parameter
);

function test(func1, func2) {
  console.log(func1); // vil skrive ut 'function() {return 1;}'
  console.log(func2); // vil skrive ut 'function() {return 2;}'
}

Som du ser, skrives nå kildekoden til funksjonene ut i konsollen. La oss gjøre slik at den skriver ut resultatene deres. For å gjøre dette, la oss skrive parenteser etter funksjonene:

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

function test(func1, func2) {
  console.log( func1() ); // vil skrive ut 1
  console.log( func2() ); // vil skrive ut 2
}

La oss skrive ut summen av resultatene fra den første og den andre funksjonen til konsollen:

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

function test(func1, func2) {
  console.log( func1() + func2() ); // vil skrive ut 3
}
Задание 1

Lag en funksjon test som tar 3 funksjoner som parametere. Overfør til den i den første parameteren en funksjon som returnerer 1, i den andre - en funksjon som returnerer 2, i den tredje - en funksjon som returnerer 3. Skriv ut summen av resultatene fra funksjonene i konsollen.