Вы когда-нибудь сталкивались с кодом 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)
.
Это процесс карри.