Transmiterea funcțiilor ca parametri în JavaScript
Funcțiile, similar cu numerele, șirurile de caractere și array-urile, pot fi transmise ca parametri către alte funcții.
Să analizăm mai detaliat cu un exemplu practic.
Să presupunem că avem funcția test care primește
doi parametri:
test(parametru1, parametru2);
Să transmitem către primul parametru al funcției test
o funcție anonimă care returnează
1, iar către al doilea parametru - o funcție
anonimă care returnează 2:
test(
function() {return 1;},
function() {return 2;}
);
Codul prezentat mai sus nu este funcțional încă, deoarece nu am creat funcția în sine. Să o creăm:
function test(func1, func2) {
}
La definirea funcției am specificat doi parametri
- func1 și func2. Acești parametri
nu știu nimic despre ce va fi transmis în ei.
Putem, de exemplu, să transmitem numere:
test(1, 2); // apelăm funcția
function test(func1, func2) {
console.log(func1); // va afișa 1
console.log(func2); // va afișa 2
}
Sau putem transmite funcții:
test(
function() {return 1;}, // primul parametru
function() {return 2;} // al doilea parametru
);
function test(func1, func2) {
console.log(func1); // va afișa 'function() {return 1;}'
console.log(func2); // va afișa 'function() {return 2;}'
}
După cum vedeți, acum în consolă se afișează codul sursă al funcțiilor. Să facem ca în consolă să se afișeze rezultatele acestora. Pentru aceasta, să scriem paranteze rotunde la funcții:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() ); // va afișa 1
console.log( func2() ); // va afișa 2
}
Să afișăm în consolă suma rezultatelor primei și celei de-a doua funcții:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // va afișa 3
}
Creați o funcție test care primește ca parametri
3 funcții. Transmiteți către
ea ca prim parametru o funcție care returnează
1, ca al doilea - o funcție care returnează
2, ca al treilea - o funcție care returnează
3. Afișați în consolă suma rezultatelor
funcțiilor.