ranking-starFirst-Class und Higher-Order-Funktionen

First-Class-Funktionen

chevron-rightFirst-Class-Funktionenhashtag
  • Erste Klasse Bürger

  • Funktionen sind nur Werte

  • Ein anderer Typ von Objekt

So können wir z.B. die Funktion add oder increment als Variable speichern:

const add = (a, b) => a + b;

const counter = {
  value: 23,
  inc: function() { this.value++; }
}

Ausserdem können wir mit First-Class-Funktionen Funktionen als Argumente für andere Funktionen übergeben, wie z.B. bei der Funktion addEventListener():

const greet = () => console.log('Hey Levin');
btnClose.addEventListener('click', greet);

Darüber hinaus können wir Funktionen als return-Value zurückgeben, das kann oftmals sehr praktisch sein.

Weil Funktionen eben nur Objekte sind haben auch sie einige Methoden, beispielsweise die bind-, call - und apply-Methoden.

counter.inc.bind(someOtherObject);

Higher-Order-Funktionen

chevron-rightHigher-Order-Funktionenhashtag
  • Erhält eine andere Funktion als Argument, gibt eine neue Funktion zurück oder beides

  • Nur möglich, aufgrund von First-Class-Funktionen

Im obigen Beispiel mit der addEventListener-Funktion ist eben genau diese Funktion eine Higher-Order-Funktion, da sie eine Callback-Funktion als Argument, hier greet, erhält.

Weiter können wir Funktionen haben, die Funktionen zurückgeben, z.B.:

Beispiele

Wie wir sehen können wir unsere eigenen Funktionen erstellen, die Funktionen annehmen (transformer). Aber JavaScript nutzt sehr of in ihren eigenen Funktionen Callback-Funktionen, wie addEventListener oder forEach.

Vorteile

  • Alle Funktionen machen genau das, was sie sagen und nicht mehr oder weniger

  • Funktionen sind wiederverwendbar

  • Es fügt eine Schicht an Abstraktion hinzu

Last updated