Это — вызываемый объект (функция, класс с
call), способный менять поведение другой функции, при этом оставляя код внутри неё таким же.Создаются они довольно просто, а используются практически везде. Это функция, которая возвращает функцию, которая меняет поведения другого объекта (см. пример).
Таким образом кодом становится намного легче управлять, добавлять новые фичи и контролировать поведение отдельных частей программы.
#теория
