A function can take a function as an argument or can return a function as a value is called an higher-order function.
- A function that returns a function
const higherOrderFunc = function() {
return function() {
return 12;
}
}
// which returns below function hence it is higher order function.
higherOrderFunc();
> ƒ () {
return 12;
}
higherOrderFunc()();
> 12
- A function that takes a function as an argument
const testFunc = function(x) {
return x + 12;
}
//which takes function as an argument.
const higherOrderFunc = function(testFunc) {
return testFunc(8);
}
higherOrderFunc(testFunc);
> 20
Example: 1
function calculate(operation, numbers) {
return operation(numbers);
}
function addition(numbers) {
let sum = 0;
for (const number of numbers) {
sum+=number;
}
return sum;
}
function multiply(numbers) {
let sum = 1;
for (const number of numbers) {
sum*=number;
}
return sum;
}
const numbers = [1,2,3,4,5];
console.log(calculate(addition, numbers));
> 15
console.log(calculate(multiply, numbers));
> 120
calculate(multiply, numbers) - Don't append parenthesis while sending function as an argument.
Benefits of higher-order functions:
- Reduces code duplication
- Single responsibility
In Javascript, functions can take arguments as primitives or objects and return the same called first-order functions
.
JS built-in higher order functions are:
arr.reduce(), arr.forEach(), arr.filter(), arr.map()
Thanks.
You can follow me here: https://twitter.com/urstrulyvishwak
Top comments (0)