Webprogrammierung
mit JavaScript
Node.js V 21.03.15

 

 

ÜberblickProjektverwaltungSyntax und AnweisungenSichtbarkeit von VariablenOperatorenKontrollstrukturenModuleObjekteDatentypenKlassenVerarbeitung von HTMLAnhang

Überblick

Merkmal
Grundparadigmaimperativ: strukturiert, objektorientiert / prototypenbasiert, ereignisgesteuert
Nebenparadigmafunktional
SyntaxC-artig: Schweifklammern, Semikolons
Speicherverwaltungautomatisch – Skriptsprache
Typsystemschwach, dynamisch
Übersetzungsmodellinterpretierend
DateiendungenJS, MJS (EcmaScript-Modul), JSON
Ersterscheinungsjahr1995
ErfinderBrendan Eich
HerausgeberNetscape, Mozilla Foundation, Ecma International
VorläuferAWK, Java (Syntax), Perl, Self (OOP)
AbkömmlingeJavaScript Object Notation (JSON), CoffeeScript
StandardisierungECMAScript (Sprachkern)
freie UmsetzungenJavaScriptCore, Rhino, SpiderMonkey, V8
Paketverwalternpm, Webpack, Yarn
gängige WerkzeugeNode.js, Express.js, Forever, jQuery, QUnit, Pkg, NW.js
BibliothekenjQuery, Electron, NodeGUI
freie IDEEclipse + Che, Geany
proprietäre IDEAdobe Brackets, WebStorm, Visual Studio
EditorenAtom, Notepad++, Visual Studio Code
Webseiten
 Adresse
Standardisierungecmascript.org
Mozilladeveloper.mozilla.org/en-US/docs/Web/JavaScript
developer.mozilla.org/de/docs/Web/JavaScript
Nachschlagewerkw3schools.com/js/
wiki.selfhtml.org/wiki/JavaScript
Tutorienjavascript.info
tutorialspoint.com
JavaScript Object Notationjson.org
jQueryjquery.com
Node.jsnodejs.org

Projektverwaltung

JavaScript ist direkt im Browser ausführbar oder über die Laufzeitumgebung Node.js, welche zugleich den eigenen Paketverwalter npm (Node Package Manager) mitbringt.

Einrichten unter Windows

Herunterladen des Installers oder mittels Chocolatey:

Einrichten unter Linux – Ubuntu

Empfohlen wird das Herunterladen von der Projektseite nodejs.org/ und Einrichten der Konsole, bspw durch Entpacken im Verzeichnis /opt und Bekanntmachen über die Datei ~/.bashrc:

Syntax und Anweisungen

Ein Programm in JavaScript beschreibt eine Liste von Anweisungen, welche der Übersetzer sequentiell von Dateianfang bis -ende abarbeitet. Mehrere Anweisung in einer Zeile müssen mittels Semikolon ; voneinander getrennt werden, wohingegen am Zeilenende kein Abschlusszeichen erforderlich ist, jedoch eindringlich empfohlen wird:

Mehrere Anweisungen lassen sich zu Blöcken mit eigenem Geltungsbereich gruppieren:

JavaScript unterscheidet zwischen feststehenden Werten (en fixed values), womit Literale gemeint sind, sowie veränderbaren Werten, auch Variablen genannt.

Zu den feststehenden Werten zählen ebenfalls literale Funktionen und Objekte:

Zahl 99 3.14159
Zeichenkette "Nö!"" 'Jo!'
Funktionsliteral function (a, b) { return a + b; }
Objektliteral {name: "Krueger", vorname: "Freddy"}
Erläuterungen

Sichtbarkeit von Variablen

Variable Werte werden mit dem Schlüsselwort var eingeführt:

Tatsächlich ist das Deklarieren von Variablen nicht erforderlich, beschränkt jedoch innerhalb einer Funktion die Sichtbarkeit auf deren Geltungsbereich (en function scope), nicht aber auf den eines gewöhnlichen Blocks (en block scope):

Aufgrund dieses fehleranfälligen Verhaltens sollten Variablen stattdessen mit dem Schlüsselwort let bekannt gemacht werden, um die Sichtbarkeit stets auf den umliegenden Block einzugrenzen:

Als konstant gebundene Variablen sind gleichermaßen blockbeschränkt:

Im Gegensatz zu veränderlichen Werten können Konstanten nicht nachträglich definiert werden.

Tatsächlich sollte nur im Bedarfsfall eine mutable Variable das Mittel der Wahl sein.

Operatoren

Eigene Operatoren sind in JavaScript nicht definierbar.

syntaktisch (…) {…} Gruppieren von Ausdrücken, Anweisungsblock
arithmetisch + - * ** / % Addition, …, Exponentiation, Division, Rest
vergleichend == === != !== gleich, strikt gleich, ungleich, strikt ungleich
< <= > >= kleiner, kleiner gleich, …
logisch ! && || not, and, or
bitverändernd ~ & | ^ bitwise not, bitwise and, bitwise or, bitwise xor
<< >> >>> left shift, right shift, unsigned right shift
zuweisend = ◌= kombinierbar mit Arithmetik u Bitmanipulation
◌++ ◌-- ++◌ --◌ Inkrement / Dekrement nach Regeln wie in C
abfragend ? : in instanceof if—then—else, Is property in?, Is istance of?
zugreifend ◌.◌ ◌[…] ◌(…) … auf Mitglieder, Funktionsaufruf
objektorientiert new ◌ Objekterzeugung mittels Konstruktoraufruf

 

Anmerkungen

Kontrollstrukturen

Wiederholungen
Sprungbefehle und Labels

Mit den Anweisungen break und continue wird eine Schleife vorzeitig abgebrochen oder zum nächsten Durchlauf gezwungen. Zudem bietet JavaScript die Möglichkeit, mittels Labels aus einer inneren Schleife direkt zur äußeren zu springen: 

Der Sprungbefehl break nicht auf Schleifen beschränkt:

Diese Verwendung von break entspricht einem klassischen goto-Befehl, und sollte vermieden werden.

Module

 

 

 

Objekte

 

Objekte sind assoziative Arrays, wobei die Schlüssel als Namen der jeweiligen Objekteigenschaften fungieren. Entsprechend kann neben der gewohnten Punktnotation auch über den Index auf eine Objekteigenschaft zugegriffen werden:

Dank dieser flexiblen Umsetzung lassen sich Eigenschaften zur Laufzeit hinzufügen, überschrieben oder löschen.

Datentypen

In JavaScript wird ausnahmslos alles als ein Objekt aufgefasst, sogar primitive Datentypen:

 

 

 

Klassen

 

 

 

 

 

Verarbeitung von HTML

JavaScript wird innerhalb der Marken <script> und </script> eingebettet, und kann sowohl im Kopf <head> als auch Rumpf <body> einer HTML-Seite stehen. Alternativ sind ganze JS-Dateien einbindbar:

Bei Angabe eines Pfades (→ externes JavaScript) ignoriert der Übersetzer etwaigen eingebetteten Code.

Ferner kann auf eine JS-Datei einer Webseite verwiesen werden (→ externe Referenz):

Ausgabe

Daten lassen sich auf vier verschiedene Arten anzeigen:

Anhang

Schlüsselwörter