Ajaxer

coding at the front{end}

19. Dezember 2012
von Oliver Ochs
Keine Kommentare

JavaScript als funktionale Programmiersprache – Teil 4

Anonyme Funktionen

Wird der optionale Funktionsname bei der Definition einer Funktion weggelassen, dann handelt es sich um eine anonyme Funktion. Eine anonyme Funktion lässt sich – wie auch eine benannte Funktion – einer Variablen zuweisen.


var anon = function () {
	console.log("anonymous");
}
anon(); // anonymous

Cover-klein in JavaScript als funktionale Programmiersprache - Teil 4 - Ajaxer

Dass sich Funktionen Variablen zuweisen lassen, zeigt, dass auch Funktionen nicht anders als Objekte und Literale behandelt werden. Eine Funktion kann wie ein Objekt verwendet und (zur Laufzeit) verändert werden.

Wenn eine benamnte Funktion erzeugt wird, sollte im Code nach der Erzeugung kein Semikolon platziert werden. Dies ist eine Ausnahme in JavaScript, den ansonsten sollten stets Anweisungen durch ein Semikolon abgeschlossen werden. Wenn eine anonyme Funktion einer Variablen zugewiesen wird, dann sollte die Anweisung durchaus durch ein Semikolon abgeschlossen werden. Daher ist Code, der keine benamnten Funktionen verwendet, sondern anonyme Funktionen, die einer Variablen zugewiesen werden, in sich konsistenter und lesbarer.

Eine anonyme Funktion lässt sich direkt ausführen. Eine solche Funktion wird dann „Immediate Function“ genannt. Dazu muss sie in runde Klammern eingeschlossen und direkt ausgeführt werden.


((function() {
	var x = 1;
	var y = 2;
	return x + y;
})()); // 3

Selbstverständlich kann auch eine anonyme Funktion Parameter haben.


(function(x, y) {
	return x + y;
})(1, 2); // 3

Auch der Rückgabewert einer anonymen Funktion lässt sich einer Variablen zuweisen.


var anonResult = (function () {
	return "anonymous";
})();
anonResult; // anonymous

Genauso lässt sich der Rückgabewert einer anonymen Funktion selbst als Parameter einer Funktion übergeben.


plus((function() {
	return 5;
})(), 5); // 10

Anonyme Funktionen werden oft als Parameter verwendet. Genauso wie sich einer Funktion Werte als Parameter übergeben lassen, können einer Funktion auch Funktionen als Parameter übergeben werden. So ist eine Funktion nicht nur in Bezug auf ihre Daten, sondern auch in Bezug auf ihr Verhalten dynamisch.

Dies 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. Weitere Leseproben folgen in Kürze.

14. Dezember 2012
von Oliver Ochs
Keine Kommentare

JavaScript als funktionale Programmiersprache – Teil 3

Konfigurationsobjekt als lesbarer Parameter

Cover-klein in JavaScript als funktionale Programmiersprache - Teil 3 - Ajaxer
Ein gebräuchliches Muster ist, einer Funktion nicht eine möglicherweise große Anzahl von Parametern, sondern ein Werte-Objekt zu übergeben.

In einigen Kontexten wird dieses Werte-Objekt auch Konfigurationsobjekt oder Parameter-Bag genannt. In diesem Werte-Objekt befinden sich Parameter als Attribute, die über einen Namen identifiziert werden.

Dies führt zu einem lesbaren Funktionsaufruf bei dem optionale Parameter einfacher weggelassen werden können. Diese optionalen Parameter lassen sich dann in der Funktion mit Defaultwerten initialisieren.


function plusWithArgument(argument) {
	if (typeof argument !== "object") {
		throw("Argument not given");
	}
	argument.operandA = argument.operandA || 0;
	argument.operandB = argument.operandB || 0;
	return argument.operandA + argument.operandB;
}

plusWithArgument({"operandA" : 1, "operandB" : 1}); //2
plusWithArgument({"operandB" : 1}); // 1
try {
	print(plusWithArgument());
} catch(e) {
	console.error(e); // Argument not given
}

Dies 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. Weitere Leseproben folgen in Kürze.