Funkcijų perdavimas parametrais JavaScript
Funkcijos, panašiai kaip skaičiai, eilutės ir masyvai, gali būti perduodamos parametrais į kitas funkcijas.
Pažvelkime atidžiau į praktinį pavyzdį.
Tarkime, kad turime funkciją test, kuri priima
du parametrus:
test(parametras1, parametras2);
Pirmąjį funkcijos test parametrą
perduokime anoniminę funkciją, grąžinančią
1, o antrają parametrą - anoniminę
funkciją, grąžinančią 2:
test(
function() {return 1;},
function() {return 2;}
);
Aukščiau pateiktas kodas kol kas neveikia, nes mes nesukūrėme pačios funkcijos. Sukurkime ją:
function test(func1, func2) {
}
Apibrėždami funkciją nurodėme du parametrus
- func1 ir func2. Šie parametrai
nieko nežino apie tai, kas į juos bus perduodama.
Galime, pavyzdžiui, perduoti skaičius:
test(1, 2); // iškviečiame funkciją
function test(func1, func2) {
console.log(func1); // išves 1
console.log(func2); // išves 2
}
O galime perduoti funkcijas:
test(
function() {return 1;}, // pirmasis parametras
function() {return 2;} // antrasis parametras
);
function test(func1, func2) {
console.log(func1); // išves 'function() {return 1;}'
console.log(func2); // išves 'function() {return 2;}'
}
Kaip matote, dabar į konsolę išvedamas pradinis funkcijų kodas. Padarykime taip, kad jis išvestų jų rezultatus. Tam parašykime prie funkcijų apvalius skliaustus:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() ); // išves 1
console.log( func2() ); // išves 2
}
Išveskime į konsolę pirmos ir antros funkcijos rezultatų sumą:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // išves 3
}
Sukurkite funkciją test, parametrais
priimančią 3 funkcijas. Perduokite į
ją pirmuoju parametru funkciją, grąžinančią
1, antruoju - funkciją, grąžinančią
2, trečiuoju - funkciją, grąžinančią
3. Išveskite į konsolę funkcijų rezultatų
sumą.