Пренос на функции како параметри во JavaScript
Функциите, слично како броевите, стринговите и низите, можат да се пренесуваат како параметри во други функции.
Да го разгледаме подетално на практичен пример.
Нека имаме функција test која прима
два параметри:
test(параметар1, параметар2);
Да го пренесеме во првиот параметар на функцијата test
анонимна функција која враќа
1, а во вториот параметар - анонимна
функција која враќа 2:
test(
function() {return 1;},
function() {return 2;}
);
Кодот даден погоре сеуште не е функционален, бидејќи не ја создадовме самата функција. Да го направиме тоа:
function test(func1, func2) {
}
При дефинирање на функцијата назначивме два параметри
- func1 и func2. Овие параметри
не знаат ништо за тоа што ќе им се пренесува.
Можеме, на пример, да пренесеме броеви:
test(1, 2); // ја повикуваме функцијата
function test(func1, func2) {
console.log(func1); // ќе испечати 1
console.log(func2); // ќе испечати 2
}
Или можеме да пренесеме функции:
test(
function() {return 1;}, // прв параметар
function() {return 2;} // втор параметар
);
function test(func1, func2) {
console.log(func1); // ќе испечати 'function() {return 1;}'
console.log(func2); // ќе испечати 'function() {return 2;}'
}
Како што можете да видите, сега во конзолата се печати изворниот код на функциите. Ајде да направиме така што тој ќе ги печати нивните резултати. За да го направиме ова, да напишеме кругли загради на функциите:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() ); // ќе испечати 1
console.log( func2() ); // ќе испечати 2
}
Ајде да го испечатиме во конзолата збирот на резултатите од првата и втората функција:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // ќе испечати 3
}
Направете функција test која како параметри
прима 3 функции. Пренесете во
неа како прв параметар функција која враќа
1, како втор - функција која враќа
2, како трет - функција која враќа
3. Испечатете ја во конзолата сумата на резултатите
од функциите.