Sie sind hier
E-Book

JavaScript für Java-Entwickler

AutorOliver Zeigermann
Verlagentwickler.press
Erscheinungsjahr2013
Seitenanzahl132 Seiten
ISBN9783868022957
FormatPDF/ePUB
KopierschutzWasserzeichen/DRM
GerätePC/MAC/eReader/Tablet
Preis9,99 EUR
Das Buch JavaScript für Java-Entwickler führt anhand von vielen Code-Beispielen in die Grundlagen der Programmiersprache JavaScript ein. Zielpublikum sind Java-Entwickler, die sich so einfach und schmerzfrei wie möglich der Sprache JavaScript nähern wollen oder müssen. Deshalb wird alles weggelassen, was man als Java-Entwickler entweder sowieso weiß oder nicht wissen muss. Zudem werden Vergleiche zu bereits bekannten Konzepten aus dem Java-Bereich gezogen.

Oliver Zeigermann programmiert seit über 10 Jahren in Java. Mit anfänglichem Widerwillen programmiert er seit 2010 auch JavaScript und ist inzwischen mit den Schwächen der Sprache versöhnt. Nun freut er sich, in einer Sprache programmieren zu können, die auf beinahe jeder Plattform läuft.

Kaufen Sie hier:

Horizontale Tabs

Leseprobe

3 Funktionen

Funktionen sind eines der mächtigsten und komplexesten Sprachkonstrukte von JavaScript. Dabei geht das Konzept von Funktionen weit über das hinaus, was in Java mit Methoden möglich ist.

3.1 Bürger erster Klasse

Eine Funktion definiert ihr in JavaScript mit dem Schlüsselwort function. 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. Ebenso wie bei einer anonymen inneren Klasse in Java ist das 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 Java keine Sichtbarkeitsbereiche auf. Zur kurzen Wiederholung: hier gibt es zwar einen Block, allerdings ist auch nach Beendigung des Blocks die darin definierte Variable a 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 Variable b 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ür Immediately-Invoked Function Expression bekannt [10].

Da dieses Pattern in JavaScript häufig verwendet wird und insbesondere Grundlage für Module ist, möchte ich ganz sicher gehen, dass es klar wird, und es noch ein bisschen feiner analysieren. Dazu zerlegen wir das Pattern in seine einzelnen Teile. Zuerst definieren wir die anonyme Funktion:

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

Nun haben wir eine Referenz auf diese Funktion in der Variablen anonFunc. Diese müssen wir nun noch wie oben mit () ausführen und danach sichergehen, dass die lokale Variable nicht mehr sichtbar ist:

anonFunc();

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

Der Effekt dieses Codes ist derselbe, allerdings ist die Schreibweise weiter oben die deutlich kürzere und daher die einzige, die ihr in der Praxis nutzen würdet.

Manchmal sieht man das IIFE-Pattern mit einer leicht anderen Klammerung. Diese leicht andere Syntax ist im Effekt jedoch äquivalent zu unserer Version oben:

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

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

Sichtbarkeitsbereiche können beliebig tief geschachtelt werden. Aus jedem inneren Sichtbarkeitsbereich kommt ihr an alle Parameter und Variablen aller äußeren Sichtbarkeitsbereiche, nicht aber anders herum.

Ein bisschen mehr dazu könnt ihr in Kapitel 5 finden, in dem wir uns auch mit dem Konzept einer Closure beschäftigen. Hier erst mal ein einfaches Beispiel für verschachtelte Sichtbarkeitsbereiche:

(function(){
var b = 10;
console.log(b);
// => 10
(function(){
var c = "c";
console.log(c);
// "c"
console.log(b);
// 10
})();
console.log(typeof c);
// => undefined
})();

3.3 Strict Mode

Beim Definieren von lokalen Variablen und Sichtbarkeitsbereichen kann man gerade als JavaScript-Anfänger viele Fehler machen. Hilfreich kann dabei der in ECMAScript 5 eingeführte, so genannte strict mode [7] sein. In diesem Modus gelten strengere Regeln für ein gültiges JavaScript-Programm.

Ihr könnt den Modus entweder für eine ganze Datei oder für einzelne Funktionen aktivieren. Dazu fügt ihr einen einfachen String mit dem Text strict mode ein. Für eine ganze Datei schreibt man dies an deren Anfang, für eine Funktion als Erstes in den Körper der Funktion. So würde dann der Anfang jeder eurer JavaScript-Dateien aussehen:

"use strict";

// ... Hier kommt der eigentliche JavaScript-Inhalt

Und so würde die Aktivierung für eine einzelne Funktion aussehen:

function strikteFunktion() {
"use strict";
// ... Weiterer Funktionskörper
}

Was bewirkt der Modus nun? Fangen wir mit dem klassischen Beispiel an, das von JavaScript-Gegnern angeführt wird, um die Minderwertigkeit von JavaScript zu beweisen. Tatsächlich machen viele Programmierer aus einem Java-Umfeld diesen Fehler mindestens einmal. Der folgende Code ...

function aha() {
hugo = 10;
console.log(hugo);
}
aha();
// => 10
console.log(hugo);
// => 10

... tut, was er tun soll, definiert aber auch versehentlich die globale Variable hugo. Dieser Code gibt also zweimal 10 aus, obwohl der Autor des Codes (ich vor einigen Jahren) hugo eigentlich als lokale Variable definieren wollte. Dazu fehlt aber das Schlüsselwort var vor der Variable hugo. Richtig würde der Code nun so aussehen und das zweite console.log gibt eine Fehlermeldung aus:

function aha() {
var hugo = 10;
console.log(hugo);
}
aha();
// => 10
console.log(hugo);
// => Uncaught ReferenceError: hugo is not defined

Hätten wir den strict mode auf dem ursprünglichen Code aktiviert, wäre der Fehler sofort aufgefallen, und schon der erste Zugriff auf hugo hätte die obige Fehlermeldung gegeben. In etwa so:

"use strict";
function aha() {
hugo = 10;
// => Uncaught ReferenceError: hugo is not defined
console.log(hugo);
}
aha();

Dies ist nur ein Beispiel für eine ganze Reihe von wenig sinnvollem oder gefährlichem Code, den der strict mode verbietet. Mehr dazu unter [7].

Zudem reserviert der strict mode einige Keywords, die in späteren Versionen von ECMAScript Einzug halten könnten. So wird eine leichte Migration gewährleistet. Unter diesen zukünftigen Schlüsselwörtern befinden sich z. B. implements, interface, und package. Man ahnt also schon, wohin die Reise gehen kann.

Hinweis: Ein Konstrukt, das wir bisher gar nicht erwähnt haben, ist das with-Statement [9]. Für einen with-Block gibt man ein Objekt an. Wenn möglich, werden in diesem Block alle unqualifizierten Variablenzugriffe auf diesem Objekt ausgeführt. Ihr solltet dieses Konstrukt nicht verwenden, da es zu schwer lesbarem Code führt. Im strict mode ist es sogar verboten.

Fast alle modernen Frameworks unterstützen den strict mode und verwenden nur Sprachkonstrukte, die mit diesem Modus kompatibel sind. Daher empfehle ich, diesen Modus immer anzuschalten. Sollte ein verwendetes Framework (wie z. B. Ext JS [8]) diesen Modus nicht komplett unterstützen, solltet ihr ihn zumindest in allen Dateien oder Funktionen aktivieren, in denen das möglich ist.

Profitipp: Den strict mode solltet ihr komplett für jede JavaScript-Datei aktivieren.

Hinweis: Ext JS unterstützt den strict mode nicht komplett [8]. In diesem Fall sollten dennoch so viele Codeteile wie möglich im strict mode laufen.

3.4 Parameter

Bisher hatten unsere Funktionen keine Parameter und keine Rückgabewerte. Parameter bergen für uns Java-Programmierer einige Überraschungen, denn ihre korrekte Verwendung unterscheidet sich von Methodenparametern in Java. Gucken wir uns dazu das folgende Beispiel an:

function incr(num) {
return num + 1;
}

Diese Funktion bekommt einen Parameter mit dem Namen num und liefert mit return ein Ergebnis zurück. Im Gegensatz zu anderen Sprachen mit...

Blick ins Buch

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

Programmieren lernen in PHP 5

E-Book Programmieren lernen in PHP 5
Format: PDF

Mit der Version 5 erreicht PHP einen bemerkenswerten Reifegrad, der PHP zu einer festen Größe in der Welt der Webprogrammierung macht. Gerade die leichte Erlernbarkeit macht PHP zur idealen…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Weitere Zeitschriften

FESTIVAL Christmas

FESTIVAL Christmas

Fachzeitschriften für Weihnachtsartikel, Geschenke, Floristik, Papeterie und vieles mehr! FESTIVAL Christmas: Die erste und einzige internationale Weihnachts-Fachzeitschrift seit 1994 auf dem ...

BMW Magazin

BMW Magazin

Unter dem Motto „DRIVEN" steht das BMW Magazin für Antrieb, Leidenschaft und Energie − und die Haltung, im Leben niemals stehen zu bleiben.Das Kundenmagazin der BMW AG inszeniert die neuesten ...

Card Forum International

Card Forum International

Card Forum International, Magazine for Card Technologies and Applications, is a leading source for information in the field of card-based payment systems, related technologies, and required reading ...

Computerwoche

Computerwoche

Die COMPUTERWOCHE berichtet schnell und detailliert über alle Belange der Informations- und Kommunikationstechnik in Unternehmen – über Trends, neue Technologien, Produkte und Märkte. IT-Manager ...

Die Versicherungspraxis

Die Versicherungspraxis

Behandlung versicherungsrelevanter Themen. Erfahren Sie mehr über den DVS. Der DVS Deutscher Versicherungs-Schutzverband e.V, Bonn, ist der Interessenvertreter der versicherungsnehmenden Wirtschaft. ...

Euphorion

Euphorion

EUPHORION wurde 1894 gegründet und widmet sich als „Zeitschrift für Literaturgeschichte“ dem gesamten Fachgebiet der deutschen Philologie. Mindestens ein Heft pro Jahrgang ist für die ...

Evangelische Theologie

Evangelische Theologie

Über »Evangelische Theologie« In interdisziplinären Themenheften gibt die Evangelische Theologie entscheidende Impulse, die komplexe Einheit der Theologie wahrzunehmen. Neben den Themenheften ...