Function Currying in JavaScript Recursively

What is function currying?

Function currying is a process in functional programming in which a function with multiple arguments can be transformed into a sequence of nesting functions.

Example of function currying:

The following is the code example of function currying:

const mul = (x) => {
   return (y) => x * y;


Most common and tricky interview question about function curry

Write a function that uses function currying to display the following output:

Output: 120

The problem solution:

const mul = (x) => {
    return (y) => {
        if (y) {
            return mul(x * y);
        } else {
            return x;

console.log(mul(5)(3)(2)(4)()) // 120