JavaScript·100 питань

QUESTION: Що таке currying?

Відповідь

Каррування в JavaScript є процесом перетворення функції з кількома аргументами, що приймає вигляд f(a, b, c), на ланцюжок функцій, кожна з яких приймає рівно по одному аргументу. У результаті виходить конструкція вигляду f(a)(b)(c).

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

Класичним прикладом на сучасному синтаксисі є стрілкова функція const add = a => b => a + b. У цьому випадку виклик add(

поверне нову функцію, яка чекає на наступний аргумент b, і при виклику add(5)(
поверне підсумковий результат додавання.

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

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

Чи корисна ця відповідь?

Інші питання цієї теми

Пов’язані питання з інших тем