Подаване на функции като параметри в 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. Изведете в конзолата сумата от резултатите
на функциите.