JavaScript Interview Questions
  • JavaScript Interview Questions
  • Contact
  • Introduction
  • Question 1
  • Question 2
  • Question 3
  • Question 4
  • Question 5
  • Question 6
  • Question 7
  • Question 8
  • Question 9
  • Question 10
  • Question 11
  • Question 12
  • Question 13
  • Question 14
  • Question 15
  • Question 16
  • Question 17
  • Question 18
  • Question 19
  • Question 20
  • Question 21
  • Question 22
  • Question 23
  • Question 24
  • Question 25
  • Question 26
  • Question 27
  • Question 28
  • Question 29
  • Question 30
  • Question 31
  • Question 32
  • Question 33
  • Question 34
  • Question 35
  • Question 36
  • Question 37
  • Question 38
  • Question 39
  • Question 40
  • Question 41
  • Question 42
  • Question 43
  • Question 44
  • Question 45
  • Question 46
  • Question 47
  • Question 48
  • Question 49
  • Question 50
  • Question 51
  • Question 52
  • Question 53
  • Question 54
  • Question 55
  • Question 56
  • Question 57
  • Question 58
  • Question 59
  • Question 60
  • Question 61
  • Question 62
  • Question 63
  • Question 64
  • Question 65
  • Question 66
  • Question 67
  • Question 68
  • Question 69
  • Question 70
  • Question 71
  • Question 72
  • Question 73
  • Question 74
  • Question 75
  • Question 76
  • Question 77
  • Question 78
  • Question 79
  • Question 80
  • Question 81
  • Question 82
  • Question 83
  • Question 84
  • Question 85
  • Question 86
  • Question 87
  • Question 88
  • Question 89
  • Question 90
  • Question 91
  • Question 92
  • Question 93
  • Question 94
  • Question 95
  • Question 96
  • Question 97
  • Question 98
  • Question 99
  • Question 100
  • Epilogue
Powered by GitBook
On this page
  • Question
  • Answer

Question 89

Question

Describe the concept of higher-order functions and provide advanced examples.

Answer

Higher-order functions are a powerful feature in functional programming that allow functions to operate on other functions as data. This opens up a world of possibilities for code reusability, abstraction, and expressive power.

Fundamental Concept:

A higher-order function is simply a function that:

  • Accepts one or more functions as arguments.

  • Returns a new function.

  • May call the passed-in function(s) within its own body.

Core Benefits:

  1. Abstraction: They encapsulate common logic for manipulating other functions, promoting cleaner and more reusable code.

  2. Modularity: You can easily swap out different functions within a higher-order function to customize its behavior without changing the core structure.

  3. Composability: Higher-order functions allow you to combine smaller functions into larger, more complex operations, making your code more modular and maintainable.

Basic Example:

function applyOperation(number, operation) {
  return operation(number);
}

const double = function (x) { return x * 2; };
const square = function (x) { return x * x; };

console.log(applyOperation(5, double)); // Output: 10
console.log(applyOperation(5, square)); // Output: 25

Advanced Examples:

Let's explore more sophisticated applications of higher-order functions:

1. map() – Transforming Arrays:

The map() method is a classic example of a higher-order function in JavaScript. It takes an array and a function as arguments, applying the function to each element of the array and returning a new array with the transformed values.

const numbers = [1, 2, 3, 4];

const squaredNumbers = numbers.map(function (number) { 
  return number * number; 
});

console.log(squaredNumbers); // Output: [1, 4, 9, 16]

2. filter() – Selecting Elements:

filter() is another common higher-order function that allows you to select elements from an array based on a given condition.

const numbers = [1, 2, 3, 4, 5];

const evenNumbers = numbers.filter(function (number) { 
  return number % 2 === 0; 
});

console.log(evenNumbers); // Output: [2, 4]

3. reduce() – Accumulating Values:

reduce() is a powerful higher-order function that lets you iterate through an array and accumulate a single value based on the elements and a provided function.

const numbers = [1, 2, 3, 4];

const sum = numbers.reduce(function (accumulator, currentNumber) {
  return accumulator + currentNumber; 
}, 0); // Initial value of the accumulator is 0

console.log(sum); // Output: 10

Key Takeaways:

Higher-order functions provide a more functional approach to programming in JavaScript, enabling you to write concise, reusable, and expressive code. By understanding these concepts, you can greatly enhance your ability to work with data structures and manipulate them in sophisticated ways.

PreviousQuestion 88NextQuestion 90

Last updated 9 months ago