Функція першого класу

Про мову програмування кажуть, що вона має функції першого класу, коли функції в цій мові вважаються такими ж змінними, як і всі решта. Наприклад, в такій мові функцію можна передавати як аргумент іншим функціям, її можна повертати іншою функцією і призначати її як значення змінній.

Приклади

Присвоєння функції змінній

const foo = () => {
  console.log("агов");
};
foo(); // Закликати її за допомогою змінної
// агов

Тут Анонімна функція присвоєна Змінній, а потім ця змінна використана, щоб закликати цю функцію, додавши після неї дужки ().

[!NOTE] Навіть якщо ваша функція має назву, для її заклику все одно можна використовувати ім'я змінної. Надання їй власної назви буває корисним для зневадження коду. Але це не впливає на те, як її закликають.

Передача функції як аргументу

function sayHello() {
  return "Привіт, ";
}
function greeting(helloMessage, name) {
  console.log(helloMessage() + name);
}
// Передати `sayHello` як аргумент функції `greeting`
greeting(sayHello, "JavaScript!");
// Привіт, JavaScript!

[!NOTE] Функція, що передається як аргумент до іншої функції, зветься функцією зворотного виклику. sayHello() - це функція зворотного виклику.

Повернення функції

function sayHello() {
  return () => {
    console.log("Привіт!");
  };
}

У цьому прикладі функція повертається з іншої функції: функцію можна повернути, тому що функції в JavaScript вважаються значеннями.

[!NOTE] Функція, що повертає функцію або приймає інші функції як аргументи, зветься функцією вищого порядку.

Дивіться також