Funktsioonide edastamine parameetritena JavaScriptis

Funktsioone, sarnaselt numbritele, stringidele ja massiividele, saab edastada parameetritena teistesse funktsioonidesse.

Vaatleme lähemalt praktilisel näitel. Oletame, et meil on funktsioon test, mis võtab kaks parameetrit:

javascripttest(parameeter1, parameeter2);

Edastame funktsiooni test esimesse parameetrisse anonüümse funktsiooni, mis tagastab 1, ja teise parameetrisse - anonüümse funktsiooni, mis tagastab 2:

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

Ülaltoodud kood ei ole veel töötav, kuna me ei ole loonud funktsiooni ennast. Teeme selle:

javascriptfunction test(func1, func2) {
  
}

Funktsiooni defineerimisel määrasime kaks parameetrit - func1 ja func2. Need parameetrid ei tea midagi sellest, mis neisse edastatakse. Võime näiteks edastada numbreid:

javascripttest(1, 2); // kutsume funktsiooni välja

function test(func1, func2) {
  console.log(func1); // väljastab 1
  console.log(func2); // väljastab 2
}

Võime aga edastada funktsioone:

javascripttest(
  function() {return 1;}, // esimene parameeter
  function() {return 2;}  // teine parameeter
);

function test(func1, func2) {
  console.log(func1); // väljastab 'function() {return 1;}'
  console.log(func2); // väljastab 'function() {return 2;}'
}

Nagu näete, väljastab konsooli nüüd funktsioonide lähtekood. Teeme nii, et see väljastaks nende tulemused. Selleks kirjutame funktsioonidele ümarsulud:

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

function test(func1, func2) {
  console.log( func1() ); // väljastab 1
  console.log( func2() ); // väljastab 2
}

Väljastame konsooli esimese ja teise funktsiooni tulemuste summa:

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

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

Tehke funktsioon test, mis võtab parameetritena 3 funktsiooni. Edastage sellele esimese parameetrina funktsioon, mis tagastab 1, teise - funktsioon, mis tagastab 2, kolmanda - funktsioon, mis tagastab 3. Väljastage konsooli funktsioonide tulemuste summa.