Передача функции в качестве аргумента в другую функцию в JavaScript является одним из ключевых аспектов функционального программирования. Этот прием позволяет создавать более гибкий и мощный код, так как функции могут быть использованы в качестве параметров, возвращаемых значений и присваиваемых переменным.
Функциональное программирование (FP) - это парадигма программирования, в которой программа рассматривается как набор функций, которые манипулируют данными. В функциональном программировании функции рассматриваются как основные строительные блоки программы, и они могут быть переданы и использованы так же, как и любые другие значения.
Давайте рассмотрим примеры использования передачи функции в функцию в JavaScript.
function greet(name) {
return 'Hello, ' + name + '!';
}
function greetUser(greeterFunc) {
let userName = "Lia";
console.log(greeterFunc(userName));
}
greetUser(greet);
В этом примере у нас есть две функции: greet
и greetUser
. Функция greet
принимает имя и возвращает приветствие. Функция greetUser
принимает другую функцию в качестве аргумента и вызывает ее, передавая ей имя пользователя. В примере мы передаем функцию greet
в качестве аргумента для greetUser
.
function performOperation(num1, num2, operation) {
return operation(num1, num2);
}
let addition = function(a, b) {
return a + b;
};
let result = performOperation(5, 3, addition);
console.log(result); // 8
В этом примере мы передаем анонимную функцию напрямую в качестве третьего аргумента функции performOperation
. Функция performOperation
принимает два числа и операцию в качестве аргументов и применяет эту операцию к этим числам. Мы создаем анонимную функцию для выполнения операции сложения и передаем ее в performOperation
.
function modifyArray(array, modifier) {
return array.map(modifier);
}
let numbers = [1, 2, 3, 4, 5];
let squaredNumbers = modifyArray(numbers, x => x * x);
console.log(squaredNumbers); // [1, 4, 9, 16, 25]
В этом примере мы используем стрелочную функцию как аргумент для метода map
. Функция modifyArray
принимает массив и функцию-модификатор и применяет этот модификатор к каждому элементу массива с помощью метода map
. Мы передаем стрелочную функцию, которая возводит каждое число в квадрат, в качестве аргумента modifier
.