Oordrag van funksies as parameters in JavaScript

Funksies, soortgelyk aan getalle, stringe en skikkings, kan as parameters na ander funksies oorgedra word.

Kom ons kyk in meer besonderhede na 'n praktiese voorbeeld. Laat ons aanneem ons het 'n funksie test wat twee parameters aanvaar:

javascripttest(parameter1, parameter2);

Kom ons gee die eerste parameter van die funksie test 'n anonieme funksie wat 1 teruggee, en die tweede parameter - 'n anonieme funksie wat 2 teruggee:

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

Die kode hierbo is nog nie werkend nie, want ons het nie die funksie self geskep nie. Kom ons doen dit:

javascriptfunction test(func1, func2) {
  
}

By die definisie van die funksie het ons twee parameters gespesifiseer - func1 en func2. Hierdie parameters weet niks daarvan dat daar iets in hulle oorgedra sal word nie. Ons kan byvoorbeeld getalle oordra:

javascripttest(1, 2); // roep die funksie aan

function test(func1, func2) {
  console.log(func1); // sal 1 uitdruk
  console.log(func2); // sal 2 uitdruk
}

Of ons kan funksies oordra:

javascripttest(
  function() {return 1;}, // eerste parameter
  function() {return 2;}  // tweede parameter
);

function test(func1, func2) {
  console.log(func1); // sal 'function() {return 1;}' uitdruk
  console.log(func2); // sal 'function() {return 2;}' uitdruk
}

Soos jy kan sien, word die bronskode van die funksies nou na die konsole uitgedruk. Kom ons sorg dat dit hul resultate uitdruk. Om dit te doen, skryf ons ronde hakies by die funksies:

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

function test(func1, func2) {
  console.log( func1() ); // sal 1 uitdruk
  console.log( func2() ); // sal 2 uitdruk
}

Kom ons druk die som van die resultate van die eerste en tweede funksie na die konsole uit:

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

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

Skep 'n funksie test wat 3 funksies as parameters aanvaar. Dra daarin die eerste parameter 'n funksie oor wat 1 teruggee, die tweede - 'n funksie wat 2 teruggee, en die derde - 'n funksie wat 3 teruggee. Druk die som van die resultate van die funksies na die konsole uit.