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

«Функциональное программирование — раздел дискретной математики и парадигма программирования, в которой процесс вычисления трактуется как вычисление значений математических функций.»

Функции первого класса

JavaScript обрабатывает функции как объекты первого класса (Function objects).

let greeting = () => 'Hello, World!'
greeting()  // 'Hello, World!'

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

Функции, которые принимают функцию в качестве аргумента или возвращают функцию. Встроенные примеры: map(), filter(), reduce().

Пример: удвоение чисел

// Традиционный цикл
const doubled = []
for (let i = 0; i < nums.length; i++) {
  doubled.push(nums[i] * 2)
}

// С map() — функциональный подход
const doubled = nums.map(n => n * 2)

Функции обратного вызова (callback)

«Callback — функция, переданная другой функции в качестве аргумента и впоследствии вызванная по завершении какого-либо действия.»

function doTwice(fn) {
  fn()
  fn()
}
doTwice(() => console.log('Привет!'))
// Привет!
// Привет!