Ajaxer

coding at the front{end}

13. Dezember 2013
von Oliver Ochs
2 Kommentare

JavaScript als funktionale Programmiersprache – Teil 10 – Rekursion

Viele Probleme lassen sich elegant durch Rekursion lösen. Eine rekursive Funktion ist eine Funktion, die sich selbst aufruft. Bei jedem Aufruf der Funktion werden Werte auf den Stack gelegt. Rekursive Funktionen mit einer hohen Rekursionstiefe können daher zu einem Stack-Overflow führen. Dies sollte dem Leser bereits bekannt sein.

Das folgende Beispiel berechnet die Fakultät der übergebenen Zahl. Die Fakultät einer Zahl wird sehr schnell sehr groß. Daher passt die Fakultät von 256 nicht in eine JavaScript-Zahl. Bei einer zu hohen Rekursionstiefe bricht die Funktion mit einem RangeError ab.


function factorial(n) {
       if (n < = 1) {
          return 1;
       } else {
          return n * factorial(n-1);
       }
}
console.log("Fakultät von 4: " + factorial(4)); //24
console.log("Fakultät von 256 ist zu groß: " 
  + factorial(256)); // Infinity 
console.log("Die Fakultät von 100000 " 
  + "lässt sich nicht berechnen: " 
  + factorial(100000)); 
  // RangeError: Maximum call stack size exceeded

Der berechnete Wert ist größer als der zur Verfügung stehende Wertebereich, also wird Infinity als Ergebnis geliefert.

Cover-klein in JavaScript als funktionale Programmiersprache - Teil 10 - Rekursion - AjaxerDies ist eine autorisierte Leseprobe aus dem Buch Oliver Ochs – JavaScript für Enterprise-Entwickler: Professionell programmieren im Browser und auf dem Server – dpunkt.verlag GmbH 2012.

6. Dezember 2013
von Oliver Ochs
Keine Kommentare

JavaScript als funktionale Programmiersprache – Teil 9 – Kaskaden

Viele Funktionen haben keinen Rückgabewert, sie liefern undefined zurück. Dies betrifft vor allem Setter. Wenn man diese Funktionen (eigentlich: Methoden) this statt undefined zurückliefern lässt, dann lassen sich Kaskaden von Funktionsaufrufen schreiben. Dies wird hier am fiktiven Beispiel einer Turtle-Graphic-Implementierung in JavaScript demonstriert:

move(100).rotate(90).move(200).rotate(30).move(20).penUp().move(20).penDown();

Kaskaden eignen sich, um komplexe Funktionsaufrufe mit vielen Parametern zu einfachen, lesbaren Funktionsaufrufen mit wenigen Parametern zu refaktorisieren. Eine solche API wird auch als fluent bezeichnet.

Cover-klein in JavaScript als funktionale Programmiersprache - Teil 9 - Kaskaden - AjaxerDies ist eine autorisierte Leseprobe aus dem Buch Oliver Ochs – JavaScript für Enterprise-Entwickler: Professionell programmieren im Browser und auf dem Server – dpunkt.verlag GmbH 2012.