JavaScript ist eine Skriptsprache, die unter dem Namen ECMAScript unter ECMA-262 standardisiert wurde. Die Syntax der Sprache ist ähnlich derjenigen von Java, doch unterscheidet sie sich in der Semantik. JavaScript ist in den meisten Web Browsern implementiert und sorgt auf den Webseiten für dynamische Effekte. ECMAScript ist eine objektbasierte Programmiersprache. Sie weist Schnittstellen zum Document Object Model (DOM) auf, d.h. man kann von der Programmiersprache aus gewisse Elemente der Webseite manipulieren, auch nachdem die Webseite schon geladen ist.
Datenstrukturen und Objekte
Eine wichtige Datenstruktur in JavaScript ist das assoziative Array, das in anderen Programmiersprachen "Dictionary" (Smalltalk, "Hash" (Perl) oder "HashMap" (Java) genannt wird.
JavaScript kennt mehrere Arten von eingebauten Objekten wie z.B. Object, Screen, Array, String, Date and Math. Andere Objekte gehören zum DOM (window, form, links etc.).
Die Objekte haben Methoden, die mit folgender Notation abgefragt werden können
screen.width //Bildschirmbreite zurückgeben screen.height //Bildschirmhöhe zurückgeben window.resizeTo(neueWeite,neueHöhe) // Fenstergröße einstellen
Eigene Objekte kann man mit Hilfe einer Konstruktorfunktion erzeugen. JavaScript ist prototypenbasiert. Weiter können auch Eigenschaften oder Methoden zu einzelnen Objekten zur Laufzeit hinzugefügt werden. Wenn man das für alle gleichartigen Objekte tun will, dann ist die "prototype"-Anweisung zu verwenden.
Kontrollstrukturen
If ... else
if (Bedingung) { Anweisungen; } [else { Anweisungen; }]
while (Bedingung) { Anweisungen; }
Do ... while
do { Anweisungen; } while (Bedingung);
for ([Startausdruck]; [Bedingung]; [Inkrementier-Ausdruck]) { statements }
For ... in-Schleife
Mit dieser Anweisung werden alle Eigenschaften eines Objektes durchlaufen (oder auch alle Elemente eines Feldes).
for (variable in object) { statement }
switch (Ausdruck) { case marke1 : Anweisungen; break; case marke2 : Anweisungen; break; default : Anweisungen; }
Funktionen
Eine Funktion ist ein Block mit einer Liste (ev. auch leer) von Parametern, dem ein Name zugewiesen wird. Eine Funktion kann einen Resultatwert zurückgeben.
function meineFunktion(param1, param2, param3) { Anweisungen; return Ausdruck; }
Beispiel: Der ursprüngliche Algorithmus von Euklid um den größten gemeinsamen Teiler zu finden. Es ist ein geometrische Lösung: Die kleinere Strecke wird jeweils von der größeren abgezogen.
function gcd(a, b) { while (a != b) { if (a > b) { a = a - b; } else { b = b - a; } } return a; }
Die Anzahl Parameter beim Aufruf muss nicht zwingend mit der Anzahl Parameter in der Funktionsdefinition übereinstimmen. Wenn zuwenig Parameter beim Aufruf angegeben werden dann wird für die übrigen Parameter einfach der Wert NULL (stimmt das?) eingesetzt. Weiter kann innerhalb der Funktion auch über den arguments
Array auf die Parameter zugegriffen werden.
Benutzerinteraktion
Meist erfolgt die Benutzerinteraktion über HTML-Formulare, auf deren Elemente man über das DOM zugreift. Es gibt jedoch auch einige wenige einfache Arten direkt mit dem Benutzer zu kommunizieren:
Die neueren Versionen von ECMAScript (wie im Internet Explorer 5 und Netscape 6) verfügen über eine try ... catch Fehlerbehandlungsanweisung.
Die try ... catch ... finally
Anweisung fängt Ausnahmen (exceptions) die aufgrund eines Fehlers auftreten oder einer throw-Anweisung auftreten, ab. Die Syntax ist wie folgt:
try { // Anweisungen in denen Ausnahmen auftreten können oder ausgelöst werden können } catch(error) { // Anweisungsfolge, die im Ausnahmefall ausgeführt wird. } finally { // Anweisungsfolge, die anschließend in jedem Fall ausgeführt wird. }
Zu Beginn werden die Anweisungen im try-Block ausgeführt. Falls eine Ausnahme auftritt, wird der Kontrollfluss sofort zum catch-Block umgeleitet mit dem Ausnahmeobjekt als Parameter.
In Normalfall wird der Ausnahmeblock übersprungen. Nachdem der try-Block ausgeführt ist (auch teilweise) und ggfs. auch der catch-Block werden in jedem Fall auch die Anweisungen im finally-Block ausgeführt.
try { Anweisungen } catch (err) { // Fehlerbehandlung } finally { Anweisungen }
Der finally-Teil kann weggelassen werden
try { Anweisungen } catch (err) { // Fehlerbehandlung }
Siehe auch
Literatur
- Tobias Hauser: JavaScript Kompendium - Interaktives und dynamisches Webpublishing, Markt und Technik, ISBN 3-8272-6465-0
- David Flanagan: JavaScript - das umfassende Referenzwerk, O'Reilly, ISBN 3-89721-330-3
- Danny Goodman: JavaScript, eine Sprache für alles., MITP-Verlag, ISBN 3-8266-0914-X
- Ralph Steyer: JavaScript in 21 Tagen - Scripte einbinden und programmieren., Markt und Technik, ISBN 3-8272-6508-8
- Stefan Münz, Wolfgang Nefzger: JavaScript Referenz, Franzis, ISBN 3-7723-6520-5
- Jan Winkler: JavaScript, Franzis, ISBN 3-7723-6007-6
- Stefan Mintert, Christine Kühnel: Workshop JavaScript, Addison-Wesley, ISBN 3-8273-1718-5
- Stefan Koch: JavaScript - Einführung, Programmierung, Referenz, dpunkt Verlag, ISBN 3-89864-111-2
- Heather Williamson: Dynamic HTML browserübergreifend - HTML, CSS, DOM, JavaScript und JScript, Galileo Press, ISBN 3-934358-29-2
- Mark Lubkowitz: Webseiten programmieren und gestalten - HTML, CSS, JavaScript, PHP, Perl, MySQL, SVG, Galileo Press, ISBN 3-89842-313-1
- Christian Wenz: JavaScript Handbuch, Galileo Press, ISBN 3-89842-366-2
- Christian Wenz: JavaScript-Rezepte, Galileo Press, ISBN 3-89842-149-X
Externe Verweise
- SELFHTML: Javascript
- Didaktisch gut gemachter Kurs für Javascript
- Technik, Grundlagen und Praxis
- Ausführliche Erläuterungen - plattformübergreifende Fallbeispiele; Programmtext darf frei verwendet werden. (englisch)
- ECMAScript-Sprachspezifikation (englisch)
- Forum