Funktioiden välittäminen parametreina JavaScriptissä

Funktiot, kuten numerot, merkkijonot ja taulukot, voivat välittyä parametreina muihin funktioihin.

Tarkastellaan tarkemmin käytännön esimerkillä. Oletetaan, että meillä on funktio test, joka vastaanottaa kaksi parametria:

javascripttest(parametri1, parametri2);

Annetaan funktion test ensimmäiseen parametriin anonyymi funktio, joka palauttaa 1, ja toiseen parametriin - anonyymi funktio, joka palauttaa 2:

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

Yllä oleva koodi ei toistaiseksi toimi, koska emme ole luoneet itse funktiota. Tehdään se:

javascriptfunction test(func1, func2) {
  
}

Määriteltäessä funktiota osoitimme kaksi parametria - func1 ja func2. Nämä parametrit eivät tiedä mitään siitä, mitä niihin välitetään. Voimme esimerkiksi välittää numeroita:

javascripttest(1, 2); // kutsutaan funktiota

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

Tai voimme välittää funktiot:

javascripttest(
  function() {return 1;}, // ensimmäinen parametri
  function() {return 2;}  // toinen parametri
);

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

Kuten näette, nyt konsoliin tulostuu funktioiden lähdekoodi. Tehdään niin, että se tulostaa niiden tulokset. Kirjoitetaan tätä varten funktioille pyöreät sulkeet:

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

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

Konsoliin tulostetaan ensimmäisen ja toisen funktion tulosten summa:

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

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

Tee funktio test, jonka parametreina on 3 funktiota. Välitä siihen ensimmäisenä parametrina funktio, joka palauttaa 1, toisena - funktio, joka palauttaa 2, kolmantena - funktio, joka palauttaa 3. Tulosta konsoliin funktioiden tulosten summa.