Каррирование — это продвинутая техника работы с функциями. Он используется не только в JavaScript, но и в других языках. Каррирование — это концепция разбиения функции со многими аргументами на множество функций с одним аргументом таким образом, чтобы вывод был одинаковым. Это метод упрощения многозначной аргументной функции до однозначных аргументных мультифункций. Таким образом, в основном f (a, b, c) функция многозначного аргумента превращается в (a) (b) (c ), которые являются многозначными функциями аргумента. Мы можем преобразовать функцию с несколькими аргументами в последовательность вложенных функций. Он возвращает новую функцию, которая ожидает, что следующий аргумент будет встроенным.

Каррирование — это преобразование функций, переводящее функцию из вызываемой как f(a, b, c) в вызываемую как f(a)(b)(c). Однако каррирование не вызывает функцию. Просто преображает.

Например, это функция без каррирования:

function sum (a, b, c){
   return a + b + c 
}
sum (1, 2, 3); //=6

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

function sum (a){
   return (b) => {  
      return (c) => {
         return a + b + c
      }
   }
}
console.log(sum(1)(2)(3)); //=6

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

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

Зачем использовать каррирование?

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

Заключение

Каррирование — невероятно полезная техника из функционального JavaScript. Это процесс преобразования любой функции в ряд вложенных функций арности.

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