Czy wzorzec „funkcja zwracająca funkcję” ma nazwę w JavaScript?

14

Często używam tego wzorca w JavaScript. Oto przykład:

const comments = [
  { text: 'Hello', id: 1 },
  { text: 'World', id: 4 },
];

const byId = id => element => element.id === id;

const comment = comments.find(byId(1));

Czasami ten wzorzec może sprawić, że nasz kod będzie czytelny i modułowy. Jak nazywa się ten wzór?

Vince Varga
źródło

Odpowiedzi:

20

Nazywa się je funkcjami wyższego rzędu.

Funkcja wyższego rzędu to funkcja, która może przyjąć inną funkcję jako argument lub zwraca funkcję w wyniku. - Funkcje wyższego rzędu w JavaScript autorstwa M. Davida Greena

Vince Varga
źródło
I kończy się zamknięcie.
Thomas Junk
3
JavaScript to język, w którym wszystkie funkcje są najwyższej klasy. Oznacza to, że możesz przekazywać je w zmiennych jak każda inna wartość. Zamknięcie to funkcja, która ma dostęp do otaczającego „zakresu leksykalnego”, w którym została zdefiniowana. Działa trochę tak, jak metody obiektów mają dostęp do zmiennych stanu obiektów.
candied_orange
3
W tym szczególnym przypadku rzuca 2 argumenty do 1.
949300,