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:
test(parametri1, parametri2);
Annetaan funktion test ensimmäiseen parametriin
anonyymi funktio, joka palauttaa
1, ja toiseen parametriin - anonyymi
funktio, joka palauttaa 2:
test(
function() {return 1;},
function() {return 2;}
);
Yllä oleva koodi ei toistaiseksi toimi, koska emme ole luoneet itse funktiota. Tehdään se:
function 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:
test(1, 2); // kutsutaan funktiota
function test(func1, func2) {
console.log(func1); // tulostaa 1
console.log(func2); // tulostaa 2
}
Tai voimme välittää funktiot:
test(
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:
test(
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:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // tulostaa 3
}
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.