(V) Funktionen in JavaScript

Cookielet 1: Funktionen – Sinn und Zweck

Aus der Motivation Programme in kleinere Teilaufgaben aufzuspalten, entstanden in fast allen Programmiersprachen Konstrukte wie Prozeduren, Funktionen, Methoden etc. Wobei sowohl die Möglichkeiten als auch die Namensgebung nicht einheitlich sind. Zudem haben sich Programmiersprachen über die Jahre auch weiterentwickelt und Elemente und Eigenschaften weiterer Programmierparadigmen mitaufgenommen.

In JavaScript bezeichnet eine Funktion ein Stück Quellcode, das einmal an einer Stelle geschrieben, von anderen Stellen aus beliebig oft aufgerufen werden kann. Funktionen können Parameter verfügen oder ein Wert an den Aufrufer zurückgeben. Zunächst können Funktionen dahingehend unterschieden werden ob sie zum Sprachkern von JavaScript gehören, oder selbst definiert wurden.

Standard-Objekte

Zu den Standard-Objekten gehören bspw. Number, Math, Date, Array etc. Jede dieser Objekte hat wiederum vielfältige Funktionen auch Methoden genannt. In den bisherigen Blogbeiträgen haben wir sehr viele praktische Beispiele gesehen.

Selbstdefinierte Funktionen

Je nach Einsatzzweck werden Funktionen unterschiedlich erzeugt und zeigen ein abweichendes Verhalten.

Funktionsdeklaration (“Normale” Funktion)

Die einfachste Funktion hat weder Parameter, noch einen Rückgabewert. Sie hat einen Namen und kann deshalb von überall aufgerufen werden. Das zweite Beispiel empfängt vom Aufrufer einen Parameterwert und übergibt auch einen Rückgabewert. Das besondere an der dritten Funktion ist, das es sich sich selbst aufruft. So können bestimmte mathematische oder logische Aufgaben einfacher und intuitiver mit rekursiven Funktionen gelöst werden.

/* Funktionsdeklarationen */

// Einfache Funktion ohne Parameter und Rückgabewert
function halloWelt() {
  alert("Hallo Welt");
}

// Funktion mit einem Parameter und Rückgabewert
function fakultaet(zahl) {
  var ergebnis = 1;
  for (var i = 1; i <= zahl; i++) {
    ergebnis = ergebnis * i;
  }
  return ergebnis;
}

// Rekursive Funktion mit einem Parameter und Rückgabewert
function fakultaetRekursiv(zahl) {
  if (zahl == 1) {
    return 1;
  } else {
    return zahl * fakultaetRekursiv(zahl - 1);
  }
}

Funktionsausdruck

Diese Variante der Funktionsdefinition ist auf den ersten Blick sehr ähnlich zu den normalen Funktionen. Allerdings ist beispielsweise schon der Gültigkeitsbereich eingeschränkt. So eignen sich Funktionsausdrücke für Code-Abschnitte die entweder einmalig oder nur dediziert an wenigen Stellen aufgerufen werden sollen. Der Funktionsname ist optional, und wird bspw. für rekursive Aufrufe innerhalb verwendet.

/* Funktionsausdrücke */

// Beide erzeugen folgenden Fehler: Uncaught TypeError: celsiusInFahrenheit is not a function
alert(quadrat_wurzel(64));
alert(kubik_wurzel(64));

// Anonynmer funktionsausdruck
var quadrat_wurzel = function(zahl) {
  return Math.sqrt(zahl);
}

// Funktionsausdruck mit Namen
var kubik_wurzel = function kubik_wurzel(zahl) {
  return Math.cbrt(zahl);
}

// Beide Funktionieren
alert(quadrat_wurzel(64)); // Ausgabe: 8
alert(kubik_wurzel(64)); // Ausgabe: 4

Anonyme Funktionen

Es gibt auch Anwendungsfälle wo Funktionen direkt als Übergabeparameter an eine andere Funktion übergeben werden. Hier besteht dann kein Bedarf diese vorher irgendwo deklarieren zu müssen. Ferner, gibt es eine Kurzschreibweise mit dem Pfeiloperator.

// Anonyme Funktion
var temperaturen_sommer = [28, 35, 37];
var fahrenheit_anonym = temperaturen_sommer.map(function(celsius) { return celsius * 1.8 + 32; });
alert(fahrenheit_anonym);

// Anonyme Funktion mit Kurzschreibweise
var temperaturen_winter = [-5, 0, 5];
var fahrenheit_pfeilfunktion = temperaturen_winter.map(celsius => celsius * 1.8 + 32);
alert(fahrenheit_pfeilfunktion);

Schreibe einen Kommentar