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

← →
↑
en ru