: Oliver Zeigermann
: JavaScript und TypeScript für C#-Entwickler
: entwickler.press
: 9783868026597
: 1
: CHF 8.90
:
: Programmiersprachen
: German
: 150
: Wasserzeichen/DRM
: PC/MAC/eReader/Tablet
: PDF/ePUB
Das Buch 'JavaScript und TypeScript für C# Entwickler' führt anhand von vielen Codebeispielen in die Grundlagen und die Patterns der Programmiersprache JavaScript ein. Zielpublikum sind C#-Entwickler, die sich in so kurzer Zeit wie möglich der Sprache JavaScript annähern wollen. Deshalb wird alles weggelassen, was man als C#-Entwickler sowieso schon weiß. Zudem werden Vergleiche zu bereits bekannten Konzepten aus dem C#-Bereich gezogen. Mit TypeScript hat Microsoft eine Obermenge von JavaScript bereitgestellt, die die Entwicklung im großen Rahmen erleichtert. In einem zusätzlichen Kapitel werden die Grundlagen und Vorteile dieses Ansatzes erläutert.

Oliver Zeigermann programmiert seit über dreißig Jahren in unterschiedlichsten Programmiersprachen. Trotz anfänglichem Widerwillen programmiert er seit 2010 auch in JavaScript. Nun freut er sich, in einer Sprache programmieren zu können, die auf beinahe jeder Plattform läuft.

3 Funktionen

Funktionen sind eines der mächtigsten und komplexesten Sprachkonstrukte von JavaScript. Wie wir in den folgenden Kapiteln sehen werden, basieren sogar die Patterns für Klassen und Module auf Funktionen.

3.1 Bürger erster Klasse

Eine Funktion definiert ihr in JavaScript mit dem Schlüsselwortfunction. Dann folgen der Name der Funktion, Klammern für die deklarierten Parameter und ein Block für den Funktionskörper. Das Ganze könnte z.B. so aussehen:

function meineErsteFunktion() {
console.log("Toll!");
}
Dazu der passende Aufruf:
meineErsteFunktion();
// => Toll!

Funktionen können auch anonym sein und haben dann keinen Namen. Das ist nur sinnvoll, wenn ihr sie direkt ausführt oder einer Variablen zuweist. Den Sinn der direkten Ausführung sehen wir weiter hinten in diesem Kapitel, hier erst einmal die Zuweisung an eine Variable:

var meineZweiteFunktion = function () {
console.log("Auch toll!");
};
meineZweiteFunktion();
// => Auch toll!

Vielleicht ist euch das Semikolon am Ende der Zuweisung aufgefallen? Ja, das Ganze ist nun zu einem Statement geworden, und Statements sollen ja laut Tipp aus dem letzten Kapitel mit einem Semikolon beendet werden.

Hinweis: Funktionen sind Objekte und können als solche einer Variablen zugewiesen oder als Parameterübergeben werden.

Hält eine Variable eine Referenz auf eine Funktion, ist die Funktion darüber mit dem()-Operator aufrufbar.

3.2 Sichtbarkeitsbereiche (Scopes)

Wie in Kapitel 2 gesehen, spannen Blöcke in JavaScript im Gegensatz zu C# und vielen anderen Programmiersprachen keine Sichtbarkeitsbereiche auf. Zur kurzen Wiederholung: Hier gibt es zwar einen Block, allerdings ist auch nach Beendigung des Blocks die darin definierte Variablea noch sichtbar:

{
var a = 10;
}
// Hoppla!
console.log(a); // => 10

Um Sichtbarkeitsbereiche zu definieren, gibt es in JavaScript ein anderes Konstrukt:

(function(){
var b = 10;
console.log("Noch bin ich da:" + b);
})();

console.log(typeof b);
// => undefined

Was passiert hier? Erst einmal definieren wir eine anonyme Funktion, also eine Funktion ohne Namen. Diese führen wir sofort mit() aus. Das weitere Klammerpaar um die Funktionsdefinition herum ist nur aus syntaktischen Gründen notwendig.

Da Funktionen Sichtbarkeitsbereiche aufspannen, ist die Variableb nach der Ausführung der Funktion nicht mehr sichtbar, und wir haben erreicht, was wir wollten. Dieses Pattern ist auch unter dem Namen IIFE fürImmediately-Invoked FunctionExpression bekannt [7].

Da dieses Pattern in JavaScript häufig v