Каррирование функций в JavaScript

Nov 27 2022
Понимание JavaScript();
возьмите сосуд, добавьте немного воды, добавьте несколько строк кода, добавьте листья карри и масалу (по вашему вкусу), готовьте на медленном огне 25 минут, и вот функция карринга, готовая к использованию в производстве . Шучу мальчики и голы.

возьмите сосуд, добавьте немного воды, добавьте несколько строк кода, добавьте листья карри и масалу (по вашему вкусу), готовьте на медленном огне 25 минут, и вот функция карринга, готовая к использованию в производстве . Шучу мальчики и голы.

Здравствуйте, JS-разработчики. Я вернулся с горячей темой «Каррирование функций»

Эта история охватывает:

  • что такое каррирование, как оно работает и для чего используется.

История начинается здесь

Что такое каррирование функции?

каррирование — это преобразование функции, которая принимает несколько аргументов [пример: имя_функции (a, b, c)] в несколько функций, которые принимают один аргумент в последовательности.

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

хорошо, давайте разберемся с этим легко, функция (doSum), которая принимает все аргументы за один раз, то есть doSum(a, b, c) [пример ниже: обычная функция сложения.

Нормальная функция сложения

Преобразуется в несколько функций (addNumbers(a), (b), (c)), которые принимают по одному аргументу за раз в последовательности.

Примечание. Функциональность (назначение) обеих функций одинакова, просто они переименованы для лучшего понимания.

Каррирование функций

вот что такое каррирование функций, по мнению гиков для гиков :

Это техника функционального программирования, последовательное преобразование функции нескольких аргументов в несколько функций одного аргумента.

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

Как работает каррирование?

curring в javascript может быть немного сложно понять, так как это javascript

но давайте попробуем разобраться, ниже пример простой функции

Простая функция

здесь функция «doSum» добавляет заданный аргумент и возвращает сумму всех переданных аргументов.

ниже приведена каррированная версия той же функции (просто переименованная для лучшего понимания)

вывод вышеуказанной и приведенной ниже функции будет одинаковым, 18

addNumbers — это каррированная версия вышеупомянутой функции doSum, addNumber родительская функция принимает аргумент, т. е. 5 в нашем случае, и возвращает другую анонимную функцию, которая принимает другой аргумент, т. е. 6 в нашем случае, и процесс продолжается до тех пор, пока не будут переданы все параметры, последняя анонимная функция возвращает значение после обработки всех входных данных.

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

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

функция каррирования с использованием функции связывания

если вы не знаете, что такое функция привязки, проверьте эту мою историю .

здесь, в приведенном выше примере, мы используем функцию связывания javascript, а с помощью функции связывания мы каррируем функцию «onBoardUser».

basicCompanyDetails одинакова для всех подключенных пользователей, поэтому мы хотим сделать детали доступными по умолчанию для всех подключенных пользователей, здесь мы передаем аргумент «basicCompanyDetails» в функцию привязки и создаем экземпляр «onBoardUser», здесь функция привязки возвращает функцию, которую вы можете сохранить в каком-либо месте памяти и выполнить ее позже, здесь мы сохраняем функцию в addUser и вызываем ее для всех пользователей.

вот как вы можете выполнить свою функцию, используя функцию привязки в javascript. больше примеров на изображении ниже.

вы также можете передать оба параметра при вызове метода addUserToSales, он выведет те же результаты.

каррирование функций с помощью замыканий.

замыкания — очень распространенная, но сложная концепция в javascript, но она мало обсуждается, вы можете прочитать, что такое замыкания, здесь .

попробуем реализовать каррирование функций с помощью замыканий.

в приведенном выше примере мы создали функцию «onBoardUser», которая принимает один аргумент и возвращает другую анонимную функцию, которая принимает другой аргумент, суммирует детали и возвращает результат.

мы вызываем функцию «onBoardUser» с одним аргументом, то есть accountDepartmentDetails , и сохраняем его в переменной (помните, что onBoardUser возвращает функцию), поэтому мы сохраняем функцию в переменной addUsertoAccounts, и теперь у переменной есть функция, которую можно вызвать в любое время с помощью аргумент, который он запрашивает, поэтому мы вызвали анонимную функцию (возвращенную onBoardUser), хранящуюся в addUsertoAccounts с аргументом (детали пользователя, т.е. detailsOfJohn).

как только функция вызывается, она завершает выполнение оператора, присутствующего внутри нее, и печатает вывод.

если бы функции были вызваны также после нескольких 10 тысяч строк кода, он напечатал бы тот же вывод, поскольку это замыкание, и он помнит его лексическую область видимости.

Карринг с ES6:

каррирование с использованием ES6

вот как вы можете использовать каррирование функций с замыканиями в JS.

тем не менее, у вас может быть один вопрос в голове: если мы можем передать несколько аргументов функции, то зачем нам вообще нужно каррирование?

это, вероятно, ответит на эти сомнения.

почему это используется

Почему? Почему? Почему?

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