--- title: Funktion erster Klasse slug: Glossary/First-class_Function translation_of: Glossary/First-class_Function original_slug: Glossary/Funktion_erster-Klasse ---
Funktionen, die wie jede andere Variable behandelt werden, bezeichnet man als Funktionen erster Klasse.
In einer Programmiersprache, die über Funktionen erster Klasse verfügt, kann so eine Funktion als Argument anderen Funktionen übergeben werden, als Wert einer Variable zugewiesen, oder von einer anderen Funktion zurückgegeben werden.
const foo = function() { console.log("foobar"); } // Aufruf der Funktion über die Variable. foo();
Wir weisen der Variable 'foo' eine anonyme Funktion
, die den String "foobar" in der Konsole ausgibt, zu. Dann rufen wir diese Funktion über die Variable auf, indem wir ein Paar Klammern an das Ende hinzufügen.
Auch wenn die Funktion benannt ist, kann der Name der Variable, der sie zugewiesen ist, benutzt werden, um die Funktion aufzurufen. Funktionen zu benennen wirkt sich nicht auf die Weise, wie sie aufgerufen wird aus, kann aber beim Debuggen hilfreich sein
function sagHallo() { return "Hallo, "; } function gruessen(gruss, name) { console.log(gruss() + name); } // Übergebe `sagHallo` als Argument an die `gruessen` Funktion. gruessen(sagHallo, "JavaScript!");
Wir übergeben unsere sagHallo()
Funktion als ein Argument an die gruessen()
Funktion. Auf diese Art behandeln wir die Funktion als Wert
.
Die Funktion, die wir als Argument einer anderen Funktion übergeben wird als Callback function bezeichnet. sagHallo() ist eine Callback function.
function sayHello() { return function() { console.log("Hello!"); } }
In this example; We need to return a function from another function - We can return a function because we treated function in JavaScript as a value
.
A function that returns a function called Higher-Order Function
Back to our example; Now, we need to invoke sayHello
function and its returned Anonymous Function
. To do so, we have two ways:
const sayHello = function() { return function() { console.log("Hello!"); } } const myFunc = sayHello(); myFunc();
This way, it returns the Hello!
message.
You have to use another variable. If you invoked sayHello
directly, it would return the function itself without invoking its returned function.
function sayHello() { return function() { console.log("Hello!"); } } sayHello()();
We are using double parentheses ()()
to invoke the returned function as well.