First-order function — функция, которая не принимает другие функции как аргументы и не возвращает функцию. Работает с «обычными» данными.
Противопоставление — higher-order function (HOF): принимает/возвращает функции (map, filter, debounce).
// first-orderfunctionadd(a, b) {
return a + b;
}
// higher-orderfunctiontwice(fn) {
return(x) =>fn(fn(x));
}
Термин реже всплывает на FE-собесах, чем HOF/first-class; полезно не путать «first-class» (статус значения) и «first-order» (нет функций на входе/выходе).
Итог: first-order = без функций в аргументах/возврате; HOF = наоборот. First-class — про то, что функции вообще можно так передавать.