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 73

Question

Describe the concept of currying and its applications.

Answer

What is Currying?

Currying is a powerful function transformation technique that takes a function with multiple arguments and converts it into a sequence of functions, each taking a single argument.

Imagine you have a function add(x, y) that adds two numbers. With currying, you'd transform it into:

function add(x) {
  return function(y) {
    return x + y;
  };
}

const add5 = add(5); // Now add5 is a function that takes one argument and adds 5 to it
console.log(add5(3)); // Output: 8 (because 5 + 3 = 8)

Key Points:

  • Gradual Argument Application: Each call to a curried function returns a new function until all arguments are provided. This allows you to "partially apply" functions, creating specialized versions for specific use cases.

  • Function Composition Made Easier: Currying aligns beautifully with function composition because you can readily combine curried functions.

Applications of Currying:

  1. Partial Application: Create customized functions with some arguments pre-filled. For example: add5(3) effectively creates a new function that adds 5 to any given number.

  2. More Readable Code: Currying can make complex function calls more understandable by breaking them down into smaller, more manageable steps.

  3. Code Reusability: Generate specialized functions from a single curried function template. This promotes code reuse and reduces redundancy.

Example: Applying Currying to Object Construction

function createCar(brand) {
  return function(model) {
    return function(color) {
      return { brand, model, color };
    };
  };
}

const myCar = createCar('Ford')('Mustang')('Red'); 
console.log(myCar); // Output: { brand: 'Ford', model: 'Mustang', color: 'Red' }
PreviousQuestion 72NextQuestion 74

Last updated 9 months ago