# Currying In JavaScript

Currying is the process of converting a function that takes multiple arguments at once into a sequence of function's each with a single argument.

𝗛𝗼𝘄 𝗱𝗼𝗲𝘀 𝗶𝘁 𝘄𝗼𝗿𝗸?

Let's say you have a function with multiple arguments: sum(a,b,c). 

𝗨𝘀𝗶𝗻𝗴 𝗖𝘂𝗿𝗿𝘆𝗶𝗻𝗴, 𝘆𝗼𝘂 𝘄𝗶𝗹𝗹 𝗴𝗲𝘁 𝗮 𝗳𝘂𝗻𝗰𝘁𝗶𝗼𝗻 𝘀𝘂𝗺𝟬(𝗮) 𝘁𝗵𝗮𝘁 𝗿𝗲𝘁𝘂𝗿𝗻𝘀 𝗮 𝗳𝘂𝗻𝗰𝘁𝗶𝗼𝗻 𝘀𝘂𝗺𝟭(𝗯) 𝘁𝗵𝗮𝘁 𝗿𝗲𝘁𝘂𝗿𝗻𝘀 𝗮 𝗳𝘂𝗻𝗰𝘁𝗶𝗼𝗻 𝘀𝘂𝗺𝟮(𝗰).

𝗜𝗻 𝗦𝗶𝗺𝗽𝗹𝗲 𝗧𝗲𝗿𝗺𝘀: 𝘀𝘂𝗺(𝗮, 𝗯, 𝗰) —> 𝘀𝘂𝗺𝟬(𝗮) => 𝘀𝘂𝗺𝟭(𝗯) => 𝘀𝘂𝗺𝟮(𝗰)

𝗘𝘅𝗮𝗺𝗽𝗹𝗲 👇

```
const sum = (a) => {
 return (b) => {
  return (c) => {
   return a + b + c;
  };
 };
};

const sum = (a) => (b) => (c) => a + b + c; 
```

𝗛𝗼𝘄 𝘁𝗼 𝗰𝗮𝗹𝗹 𝘁𝗵𝗲 𝗳𝘂𝗻𝗰𝘁𝗶𝗼𝗻?

𝟬) sum(10)(20)(30); // 60 <br/>
𝟭) const addTen = sum(5)(5);<br/>
  addTen(20); // 30
