Oordrag van funksies as parameters in JavaScript
Funksies, soortgelyk aan getalle, stringe en skikkings, kan as parameters na ander funksies oorgedra word.
Kom ons kyk in meer besonderhede na 'n praktiese voorbeeld.
Laat ons aanneem ons het 'n funksie test wat
twee parameters aanvaar:
test(parameter1, parameter2);
Kom ons gee die eerste parameter van die funksie test
'n anonieme funksie wat
1 teruggee, en die tweede parameter - 'n anonieme
funksie wat 2 teruggee:
test(
function() {return 1;},
function() {return 2;}
);
Die kode hierbo is nog nie werkend nie, want ons het nie die funksie self geskep nie. Kom ons doen dit:
function test(func1, func2) {
}
By die definisie van die funksie het ons twee parameters gespesifiseer
- func1 en func2. Hierdie parameters
weet niks daarvan dat daar iets in hulle oorgedra sal word nie.
Ons kan byvoorbeeld getalle oordra:
test(1, 2); // roep die funksie aan
function test(func1, func2) {
console.log(func1); // sal 1 uitdruk
console.log(func2); // sal 2 uitdruk
}
Of ons kan funksies oordra:
test(
function() {return 1;}, // eerste parameter
function() {return 2;} // tweede parameter
);
function test(func1, func2) {
console.log(func1); // sal 'function() {return 1;}' uitdruk
console.log(func2); // sal 'function() {return 2;}' uitdruk
}
Soos jy kan sien, word die bronskode van die funksies nou na die konsole uitgedruk. Kom ons sorg dat dit hul resultate uitdruk. Om dit te doen, skryf ons ronde hakies by die funksies:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() ); // sal 1 uitdruk
console.log( func2() ); // sal 2 uitdruk
}
Kom ons druk die som van die resultate van die eerste en tweede funksie na die konsole uit:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // sal 3 uitdruk
}
Skep 'n funksie test wat
3 funksies as parameters aanvaar.
Dra daarin die eerste parameter 'n funksie oor wat
1 teruggee, die tweede - 'n funksie wat
2 teruggee, en die derde - 'n funksie wat
3 teruggee. Druk die som van die resultate van die
funksies na die konsole uit.