foundation

Функции высшего порядка

Callbacks, map/filter/reduce, фабрики функций, декораторы и точки внедрения зависимостей.

Функция высшего порядка принимает функцию, возвращает функцию или делает оба. `map`, `filter`, `reduce`, middleware, валидаторы и декораторы отделяют политику от итерационной обвязки.

При обёртывании функций намеренно сохраняйте `this`, arity и поведение при ошибках. `reduce` становится нечитаемым, когда кодирует слишком много состояния — выбирайте явные циклы ради ясности.

					const withLogging = (fn) => (...args) => {
  console.log('call', args);
  return fn(...args);
};
				

На интервью объясняйте концепцию на конкретном примере и называйте поведение рантайма, которое проверяют.

Компромисс часто между ясностью и производительностью или между безопасностью и удобством.

Чеклист:

  • Называйте контракты входа/выхода.
  • Сохраняйте this при обёртывании.
  • Держите reducers сфокусированными.