Понимание каррирования в JavaScript

Функциональное программирование - это стиль программирования, которое пытается передать функции в качестве аргументов (т.н. callback'и) и возвращает функции без каких-либо побочных эффектов (изменений в состоянии программы). Многие языки принимают этот стиль программирования: JavaScript, Haskell, Clojure, Erlang и Scala самые популярные среди них.

С помощью данный способности, передавать и возвращать функции, этот стиль привносит многие концепты:

  • Чистые функции
  • Каррирование
  • Функции высшего порядка

Один из таких концептов мы будем сегодня рассматривать в данной статье - это каррирование (currying). В этой статье как работает каррирование и как оно может быть полезно в работе разработчиков программного обеспечения.

Ремарка: в место того, чтобы копипастить многоразовые функциональные возможности JS, вы можете обернуть их компонетами с помощью Bit и быстро поделиться ими между проектами в вашей команде.

Что такое каррирование?

Каррирование - это процесс в функциональном программирование, в котором вы можете изменить функцию с множеством аргументов в последовательность вложенных функций. Оно возвращает новую функцию, которая ожидает следующий аргумент.

Оно (каррирование) продолжает возвращать новую функцию (которая ожидает текущий аргумент, как говорилось ранее) до тех пор, пока все аргументы не будут исчерпаны. Аргументы сохраняются живыми (прим. имеются в виду, что аргументы сохраняются

function fn(a, b) {
    //...
}
function _fn(a, b, c) {
    //...
}