Ответ вслух Junior Функции высшего порядка спрашивают часто обновлено

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

Вопрос

Что такое функции высшего порядка? Расскажите, какие вы используете и какие писали сами.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Функция высшего порядка принимает функцию аргументом или возвращает функцию. В JS это естественно, потому что функции это обычные значения.

Что должно прозвучать в ответе

  • Определение: принимает или возвращает функцию; возможно, потому что функции это значения

  • Встроенные примеры: методы массивов, таймеры, обработчики, `then`

  • Свои: фабрики, `debounce`/`throttle`, `memoize`, обёртки для логирования или повторов

  • Связь с замыканиями: возвращённая функция хранит настройки во внешней области

  • Плюсы: переиспользование поведения, декларативный код

  • Минусы: глубокая вложенность читается хуже, легко потерять `this`

Что могут спросить следом

  • Напишите функцию once.
  • Почему ['1','2','3'].map(parseInt) даёт неожиданный результат?
  • Чем HOF отличается от HOC в React?

Разбор

Образцовый ответ: «Функция высшего порядка принимает функцию аргументом или возвращает функцию. В JS это естественно, потому что функции это обычные значения. Каждый день я пользуюсь встроенными: map, filter, reduce, setTimeout, addEventListener, then у промисов. Сам писал, например, debounce для поиска: функция принимает обработчик и задержку и возвращает новую функцию, которая хранит id таймера в замыкании. Ещё обёртку withRetry, которая принимает асинхронную функцию и повторяет её при ошибке с паузой. Плюс таких функций в том, что поведение отделено от бизнес-логики и переиспользуется. Минусы: цепочки из многих обёрток хуже отлаживать, и при передаче метода как колбэка можно потерять this. Похожая идея в React называется компонентом высшего порядка, но сейчас её чаще заменяют хуками».

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.