Funktionen definieren und aufrufen
Eine Funktion ist ein benannter Block, der erst läuft, wenn man ihn aufruft — beliebig oft und mit verschiedenen Werten.
function begruesse(name) {
console.log("Hallo " + name + "!");
}
begruesse("Mia");
begruesse("Tom");- Definition:
function name(parameter) { … }legt den Baustein an — dabei läuft noch nichts. - Aufruf:
begruesse("Mia");führt den Block aus; ohne Aufruf passiert nie etwas. - Parameter:Platzhalter in der Definition, hier
name. - Argument:der konkrete Wert beim Aufruf, hier
"Mia"; er wird in den Parameter kopiert. - Mehrere Parameter:durch Komma getrennt; die Reihenfolge der Argumente muss passen.
Rückgabe mit return
Oft soll eine Funktion ein Ergebnis liefern statt es nur auszugeben. Das macht return.
function flaeche(a, b) {
return a * b;
}
let zimmer = flaeche(4, 3);
let flur = flaeche(5, 2);
console.log(zimmer + flur);- return:beendet die Funktion und gibt den Wert an die Aufrufstelle zurück.
- Aufruf als Wert:
flaeche(4, 3)„ist“ danach 12 und kann gespeichert oder weiterverrechnet werden. - console.log ≠ return:
console.logzeigt nur an; mit dem angezeigten Wert kann das Programm nicht weiterrechnen. - Lokal:Variablen, die in der Funktion mit
letangelegt werden, gibt es nur dort. - Wozu?:kein doppelter Code, Änderungen an nur einer Stelle, sprechende Namen für Teilaufgaben.
Zerlege das Hauptprogramm: Klicke einen Block an (oder Tab + Enter), um ihn in die Funktion auszulagern. Was sich zwischen den Blöcken unterscheidet, wird zum Parameter. Achte auf Gruppe C.
Halte fest: Was in allen Blöcken gleich ist, wandert in die Funktion; was sich unterscheidet, wird zum Parameter und beim Aufruf als Argument übergeben.
function name(p1, p2) { …; return ergebnis; } · Aufruf: let x = name(a1, a2);
Allgemeine Hinweise
Definiert heißt nicht ausgeführt
Fehlt der Aufruf, passiert nichts — und es gibt auch keine Fehlermeldung. Prüfe: Steht irgendwo name(…)?
Ein Name, eine Aufgabe
Nenne Funktionen nach dem, was sie tun: berechnePreis, zeigePunkte. Wird ein Name zu lang, macht die Funktion wahrscheinlich zu viel.
Nach return ist Schluss
Zeilen hinter return im selben Block werden nie ausgeführt. Ein console.log dahinter bleibt stumm.
