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