Sie sind hier 439
Funktionen erster Klasse
Dies ist die
eigentliche Funktion.
Hier sind wieder unsere beiden Funktionen. Bedenken
Sie, dass quack mit einer Funktionsdeklaration erzeugt
wurde, während fly auf einem Funktionsausdruck
basiert. In beiden Fällen bekommen wir eine Referenz,
die wir in der Variablen quack bzw. fly speichern.
Normalerweise sehen wir Funktionen als etwas, das man aufrufen kann. Eigentlich
können Sie sich eine Funktion aber auch als Wert vorstellen. Dieser ist tatsächlich
eine Referenz auf die Funktion, die Sie (wie bereits gesehen) bei der Definition mit
einer Funktionsdeklaration oder einem Funktionsausdruck erhalten.
Wie Funktionen auch Werte sein können
var superFly = fly;
superFly(2);
var superQuack = quack;
superQuack(3);
fly
function(num) {
...
}
Eine Variable kann
eine Referenz auf eine
Funktion enthalten.
function quack(num) {
for (var i = 0; i < num; i++) {
console.log("Quak!");
}
}
var fly = function(num) {
for (var i = 0; i < num; i++) {
console.log("Ich fliege!");
}
}
Nachdem wir superFly den Wert von fly
zugewiesen haben, enthält superFly die
Funktionsreferenz. Durch Hinzufügen von
runden Klammern und eines Arguments können
wir die Funktion aufrufen.
Obwohl quack von einer Funktionsdeklaration
erzeugt wurde, ist ihr Wert eine Funktions-
referenz, die wir hier der Variablen superQuack
zuweisen und aufrufen.
JavaScript-Konsole
Ich fliege!
Ich fliege!
Quak!
Quak!
Quak!
Eines der einfachsten Dinge, die Sie mit Funktionen tun können, ist ihre
Zuweisung zu Variablen, wie hier:
Diese Funktionsdeklaration weist die Referenz
einer Variablen mit dem Namen Ihrer Wahl zu,
in unserem Fall heißt sie quack.
Bei einem Funktionsausdruck müssen Sie die
resultierende Referenz selbst der Variablen zuweisen.
Hier speichern wir die Referenz in der Variablen fly.
Anders gesagt: Referenzen bleiben Referenzen,
egal wie sie erzeugt werden (per Deklaration
oder mit einem Ausdruck)!
440 Kapitel 10
Übung zu Funktionen als Werten
Damit die Idee von Funktionen als Werten besser in Ihr Hirn eindringt, hier
ein kleines Glücksspiel: Testen Sie unser Hütchenspiel. Sind Sie Gewinner oder
Verlierer?
var winner = function() { alert("GEWINNER!") };
var loser = function() { alert("VERLIERER!") };
// ein kleiner Test zum Aufwärmen
winner();
// zur Übung ein paar Zuweisungen auf andere Variablen
var a = winner;
var b = loser;
var c = loser;
a();
b();
// Viel Glück beim Hütchenspiel!
c = a;
a = b;
b = c;
c = a;
a = c;
a = b;
b = c;
a();
Führen Sie den Code
(manuell!) aus und
finden Sie heraus, ob
Sie Gewinner (winner)
oder Verlierer (loser)
sind.
Diese Variablen enthalten
Referenzen auf die Funktionen
winner und loser. Referenzen können,
wie andere Werte auch, anderen
Variablen zugewiesen werden.
Vergessen Sie nicht, dass wir eine
Funktion jederzeit über ihre
Referenz aufrufen können.
Stellen Sie sich Funktionen als Werte vor, wie Zahlen, Strings,
Boolesche Werte und Objekte. Der größte Unterschied zu anderen
Werten besteht darin, dass wir Funktionen aufrufen können.
Spitzen Sie Ihren Bleistift

Get JavaScript-Programmierung von Kopf bis Fuß now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.