Вы когда-нибудь сталкивались с кодом JavaScript, в котором функция вызывалась вот так foo(1)(2)(3), и вы не были уверены, что происходит? Если да, то вы читаете правильный пост в блоге.

Каррирование — это метод функционального программирования, который позволяет нам создать функцию с меньшим количеством аргументов из функции, которая принимает много аргументов. Например, возьмем классический пример сложения 3 чисел a, b и c.

Первая версия функции добавления должна быть прямой. Функция принимает три аргумента и возвращает их сумму. Легкий.

В каррированной версии каждая функция принимает один аргумент и возвращает новую функцию. Если мы вызовем var add1 = add(1), это вернет функцию, которая закрывает 1 как значение для переменной a. Поскольку он вернул функцию, которую мы сохранили в переменной add1, мы можем написать var add12 = add1(2). Функция add12 замыкает a=1 и b=2. Мы можем сделать то же самое: var res = add12(3) . res теперь будет равно 6. Мы можем не сохранять промежуточные функции в переменных и просто писать var res=add(1)(2)(3) .

Это процесс карри.