В этой статье мы собираемся обсудить каррирование в JavaScript. Здесь мы увидим, как работает каррирование и чем оно может быть полезно для разработчиков программного обеспечения.
Что такое карри?
Каррирование — это функция, которая принимает несколько аргументов. Это превратит эту функцию в серию функций, где каждая маленькая функция будет принимать одну
Это преобразование функций, переводящее функцию из вызываемой как sum(1, 2, 3) в вызываемую как sum(1)(2)(3).
Здесь функция с тремя аргументами, поэтому вместо того, чтобы принимать все аргументы один раз, она принимает первый, возвращает новую функцию, которая принимает второй, и возвращает новую функцию, которая принимает третий, и так будет продолжаться до тех пор, пока не будут выполнены все аргументы. .
Давайте разберемся на отдельных примерах
Во-первых, я собираюсь создать простую функцию, которая принимает два параметра.
const sum = (a, b) => { return a+b } console.log(sum(1, 1)) // 2
Здесь произошло то, что эта функция добавляет все параметры чисел, которые мы передали.
Итак, этот первый пример — это просто простая функция, которая принимает несколько параметров.
Преобразуем существующую функцию в каррированную
В этом примере эта функция будет принимать один аргумент и возвращать ряд функций.
const sumCurry = a => { return b => { return a+b; } } console.log(sumCurry(1)(1)) // 2
как мы реализовали ту же функцию, но с каррированной версией, которая принимает один аргумент a
и возвращает функцию, которая принимает другой аргумент b
, и эта функция возвращает их сумму, что дало нам тот же результат, что и в примере: 5
.
Также, если вы хотите увеличить количество аргументов, тогда программа каррированной версии будет ниже
const sumCurry = a => { return b => { return c => { return a+b+c; }; } } console.log(sumCurry(1)(1)(1)) // 3
Ключевые моменты, которые следует помнить
- Он делит вашу функцию на несколько более мелких функций, которые могут выполнять одну обязанность. Это делает вашу функцию чистой и менее подверженной ошибкам и побочным эффектам.
- Он используется в функциональном программировании для создания функции более высокого порядка.
- это делает код читаемым.
Чтобы лучше понять, вот ссылка на видео