Curry в Javascript е синоним на опростяване. Една проста дефиниция на къри е: начин за разбиване на функция, която приема множество аргументи, във функции, които могат да приемат един или повече от тези аргументи. Логиката на оригиналната функция остава същата, правейки функциите като компоненти за многократна употреба. Всъщност Currying е вид затваряне (в бъдеща публикация) или множество функции за затваряне. Да видим някои примери:

// regular function
let multiply = (x, y) => (x * y);
console.log(multiply(2, 4)) // output 8
// currying function (reducing a function to one arg and generating another function)
let doubleIt = (y) => multiply(2, y);
console.log(doubleIt(3)); // output 6

Друг пример:

const btnChangeColor = document.getElementById('btnChangeColor');
const awesomeCurryingFunc = x => 
    y => z => x.addEventListener(y, (e) => 
      { e.target.style.color = c; });
awesomeCurryingFunc(btnChangeColor)('click')('green');

Още едно:

const customers = [{ id: 1, name: 'leo' }, { id: 2, name: 'nat' }, { id: 3, name: 'ceci' }];
const getCustomersIds = (c) => c.map( (x) => x.id );
console.log(getCustomersIds(customers)); // output [1, 2, 3]

Както можете да видите, тази функционалност е достатъчно динамична, за да ни позволи да направим функция за многократна употреба.

Препоръчвам ви да разгледате functional.js, това е страхотна функционална JavaScript библиотека.

Това е всичко приятели,

Благодаря за четенето!