Függvények paraméterként történő átadása JavaScriptben
A függvények, hasonlóan a számokhoz, sztringekhez és tömbökhöz, átadhatók paraméterként más függvényeknek.
Nézzük meg részletesen egy gyakorlati példán keresztül.
Tegyük fel, hogy van egy test függvényünk, amely
két paramétert fogad:
test(paraméter1, paraméter2);
Most az első paraméterként adjunk át a test függvénynek
egy anonim függvényt, amely 1-et ad vissza,
a második paraméterként pedig egy anonim függvényt,
amely 2-t ad vissza:
test(
function() {return 1;},
function() {return 2;}
);
A fenti kód még nem működik, mivel még nem hoztuk létre magát a függvényt. Hozzuk létre:
function test(func1, func2) {
}
A függvény definiálásakor két paramétert adtunk meg
- func1 és func2. Ezek a paraméterek
nem tudnak arról, hogy mi kerül majd beléjük.
Adhatunk például át számokat:
test(1, 2); // meghívjuk a függvényt
function test(func1, func2) {
console.log(func1); // kiírja 1-et
console.log(func2); // kiírja 2-t
}
De átadhatunk függvényeket is:
test(
function() {return 1;}, // első paraméter
function() {return 2;} // második paraméter
);
function test(func1, func2) {
console.log(func1); // kiírja 'function() {return 1;}'
console.log(func2); // kiírja 'function() {return 2;}'
}
Amint látod, most a függvények forráskódja íródik ki a konzolra. Csináljuk úgy, hogy azok eredményeit írja ki. Ehhez írjunk a függvények mögé kerek zárójeleket:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() ); // kiírja 1-et
console.log( func2() ); // kiírja 2-t
}
Most írassuk ki a konzolra az első és a második függvény eredményeinek összegét:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // kiírja 3-at
}
Készíts egy test függvényt, amely paraméterként
3 függvényt fogad. Add át neki
első paraméterként egy, 1-et visszaadó
függvényt, másodikként egy, 2-t visszaadó
függvényt, harmadikként pedig egy, 3-at visszaadó
függvényt. Írasd ki a konzolra a függvények eredményeinek
összegét.