Skip to main content
Practice Problems

What is currying in JavaScript

Currying is a technique of transforming a function with multiple arguments into a sequence of functions, each taking one argument.


Why is Currying Needed?

  • Reusability: you can fix some arguments in advance.
  • Function purity: curried functions are easier to test and combine.
  • Functional style: often used in functional programming.

Simple Example

javascript
function sum(a) { return function (b) { return function (c) { return a + b + c; }; }; } console.log(sum(1)(2)(3)); // 6

Here sum is a curried function, it takes one argument at a time.

Partial Application

javascript
function multiply(a) { return function (b) { return a * b; }; } const double = multiply(2); // partially applied function console.log(double(5)); // 10

Universal Currying Function

javascript
function curry(fn) { return function curried(...args) { if (args.length >= fn.length) { return fn(...args); } else { return (...next) => curried(...args, ...next); } }; } function add(a, b, c) { return a + b + c; } const curriedAdd = curry(add); console.log(curriedAdd(1)(2)(3)); // 6 console.log(curriedAdd(1, 2)(3)); // 6

Difference from Regular Function

CharacteristicRegular FunctionCurried Function
Callsum(1, 2, 3)sum(1)(2)(3)
Argument applicationAll at onceOne at a time
ReusabilityHarderEasy to fix some arguments

When to Apply Currying?

  • When you need to partially apply arguments
  • When using functional style (e.g., with map, filter, reduce)
  • When composing complex functions from simple ones

Summary:

Currying is a powerful technique in functional programming. It helps write more modular, readable and reusable code, especially in chains and callbacks.

Short Answer

Interview ready
Premium

A concise answer to help you respond confidently on this topic during an interview.

Finished reading?
Practice Problems