Currying in JavaScript: A Deep Dive

Abhishek SharmaAbhishek Sharma
2 min read

Table of contents

What is Currying?

Currying is a higher-order function technique in functional programming where a function that takes multiple arguments is transformed into a series of functions, each taking a single argument. This process is done by creating a new function that takes the first argument and returns another function that takes the second argument, and so on.

Why Use Currying?

  • Code Reusability: Currying allows you to create reusable functions that can be applied to different arguments.

  • Improved Readability: Curried functions can make your code more readable and easier to understand.

  • Partial Application: Currying can be used to create partially applied functions, which can be useful in various scenarios.

Example of Currying in JavaScript

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

function curry(fn) {
  return function curried(...args) {
    if (args.length >= fn.length) {
      return fn(...args);
    } else {
      return function (...restArgs) {
        return curried(...args, ...restArgs);
      };
    }
  };
}

const curriedAdd = curry(add);

console.log(curriedAdd(2)(3)); // Output: 5

In the above example, we've created a curry function that takes a function as input and returns a curried version of it. The curriedAdd function is a curried version of the add function. When we call curriedAdd(2), it returns a new function that takes the second argument and adds it to 2.

Partial Application

Partial application is a technique where a function is applied to some of its arguments, creating a new function that takes the remaining arguments. Currying can be used to achieve partial application.

const addFive = curriedAdd(5);
console.log(addFive(3)); // Output: 8

In this example, addFive is a partially applied function that adds 5 to any number.

Conclusion

Currying is a powerful technique in JavaScript that can improve code readability, reusability, and flexibility. By understanding the concept of currying and how to implement it, you can write more elegant and efficient JavaScript code.

0
Subscribe to my newsletter

Read articles from Abhishek Sharma directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Abhishek Sharma
Abhishek Sharma

Abhishek is a designer, developer, and gaming enthusiast! He love creating things, whether it's building websites, designing interfaces, or conquering virtual worlds. With a passion for technology and its impact on the future, He is curious about how AI can be used to make work better and play even more fun.