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:
test(parameeter1, parameeter2);
Edastame funktsiooni test esimesse parameetrisse
anonüümse funktsiooni, mis tagastab
1, ja teise parameetrisse - anonüümse
funktsiooni, mis tagastab 2:
test(
function() {return 1;},
function() {return 2;}
);
Ülaltoodud kood ei ole veel töötav, kuna me ei ole loonud funktsiooni ennast. Teeme selle:
function 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:
test(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:
test(
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:
test(
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:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // väljastab 3
}
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.