JavaScript
Grundlagen
Javascript einbauen
Javascript-Code kann überall im HTML stehen, sollte aber im Head-Element stehen. Dafür gibt es 2 Möglichkeiten. Den Code direkt in die HTML-Seite schreiben
<script type="text/javascript"> .. Javascript-Code .. </script>
oder die Datei angegeben, in der der Javascript-Code steht.
<script type="text/javascript src="datei.js"></script>
Im Sinne eines guten Programmierstils sollte der Javascript-Code immer in einer eigenen Datei stehen und immer im head der Seite eingebunden werden.
Kommentare
- einzeilige Kommentare: alles nach // bis zum Ende der Zeile wird ignoriert
- mehrzeilige Kommentare: alles zwischen /* und */ wird ignoriert, auch wenn mehrere Zeilen dazwischen liegen
Namen
Namen von Variablen, Konstanten und andere Bezeichner in Javascript müssen sich an folgende Syntax halten.
- das erste Zeichen muss ein Buchstabe, Unterstrich oder ein Dollarzeichen sein
- alle weiteren Zeichen können Buchstabe, Unterstrich, Dollarzeichen oder Zahl sein.
- alle anderen Zeichen sind unzulässig
Reservierte Wörter
Zusätzlich zu den oben genannten Regeln dürfen Namen keine der folgenden reservierten Wörter sein absctract, boolean, break, byte, case, catch, char, class, const, continue, debugger, default, delete, do, double, else, enum, export, extends, false, final, finally, float, for, function, goto, if, implements, import, in, instanceof, int, interface, long, native, new, null, package, private, protected, public, return, short, static, super, switch, synchronized, this, throw, throws, transient, true, try, typeof, var, volatile, void, while, with
Zahlen
- Zahlen werden immer intern als 64bit Fließkomma-Zahl behandelt
- Zahlen können enthalten
- Vorzeichen: kann + oder – sein. Ist keines angegeben wird + angenommen
- Vorkommastellen:
- Nachkommastellen: werden mit einem Punkt von den Vorkommastellen abgetrennt
- Exponent: wird durch e oder E abgetrennt und kann ein Vorzeichen + oder – enthalten
- NaN steht für Not a Number und wird zurückgegeben, wenn die Operation zu keinem regulären Ergebnis führt.
- Infinity steht für Zahlen größer 1.79769313486231570e+308
Strings
- Strings sind Zeichenketten, die in einfache oder doppelte Anführungszeichen eingeschlossen sind
- Sollen Anführungszeichen in einem String vorkommen, muss ein vorangestellter Backslash \ seine Sonderbedeutung aufheben
- Soll ein Backslash in einem String vorkommen muss ein Backslash vorangestellt werden.
- mit der Eigenschaft length kann die Länge eines Strings ermittelt werden. ‚erich‘.length ergibt 5
-
Strings können mit + zusammengefügt werden. Aber Achtung: + wird auch benutzt um Zahlen zu
addieren. Es gilt also
- 12 + 12 => 24
- ’12‘ + ’12‘ => ‚1212‘
Variablen
- Variablen werden mit
var
deklariert (z.B.var neueVariable;
) -
Variablen können bei der Deklaration initialisiert werden (z.B.
var neueVariable = 42;
) - Javascript kennt 3 grundlegende Datentypen
- Text
- Zahl
- Boolean
Geltungsbereich
- der Geltungsbereich einer Variablen ist die Funktion in der sie mit var deklariert wurde
- die Variable ist auch in Funktionen sichtbar, die innerhalb ihres Geltungsbereichs definiert werden
- eine Variable, die ausserhalb jeder Funktion definiert ist, nennt man globale Variable
- eine Variable, die innerhalb einer Funktion definiert ist, nennt man lokale Variable
- eine Variable die ohne var deklariert wurde, wird zur globalen Variablen.
- jede Variable sollte so lokal wie möglich sein.
Arrays
// 2 Möglichkeiten ein Array zu erzeugen var arrayVariable = new Array(); var arrayVariable = [12.5,14,19]; // Zuweisung arrayVariable[3] = 17.9; // 2 dimensionale Arrays arrayVariable = new Array( new Array ); arrayVariable = [[3][5][7]] // Zuweisung arrayVariable = [3][5] = 15;
Boolesche Operatoren
Vergleiche
== Gleichheit != Ungleichheit < kleiner als > größer als ! Negation <= kleiner gleich >= größer gleich && true, wenn beide Seiten true || true, wenn eine Seite true
Wahrheit
- falsch ist:
- null
- false
- undefined
- NaN
- die Zahl 0
- der Leerstring
- alles andere ist wahr
Anweisungen
- Eine Anweisung in Javascript endet mit einem Semikolon
- Achtung: Javascript fügt an Zeilen, die nicht mit Semikolon enden, ein Semikolon ein. Dies führt in Ausnahmefällen zu sehr schwer auffindbaren Fehlern.
Verzweigung
If
if (Bedingung) { Code-Segment 1 } else { Code-Segment 2 }
Wenn die Bedingung wahr ist, wird Code-Segment 1 ausgeführt, ansonsten Code-Segment 2.
Es gibt kein elseif
oder elsif
, aber der Befehlssequenz
else if()
bewirkt dasselbe.
Switch – Case
switch (Testwert) { case Übereinstimmung1: Anweiungen; break; default: Anweisung; break; }
- Es wird überprüft, ob ein Testwert einen bestimmten Wert hat.
- Ist dieser Wert z.B. Übereinstimmung1 wird der Code nach diesem case bis zum nächsten break ausgeführt.
- Trifft keine der genannten cases zu werden, die Anweisungen nach default ausgeführt (default ist optional).
- Jeder case-Zweig sollte mit einem break beendet werden. Ein sogenanntes Durchfallen in einen anderen Zweig führt zu unübersichtlichem und daher fehleranfälligem Code
Schleifen
For
for(Initialisierung; Test; Aktualisierung) { Anweisungen; }
Bevor die Schleife begonnen wird, wird die Initialisierung durchgeführt. Danach wird die Test durchgeführt. Ergibt dieser true werden die Anweisungen ausgeführt. Nach den Anweisungen wird die Aktualisierung ausgeführt und dann der Test. Anweisungen -> Aktualisierung -> Test wird so lange wiederholt, wie Test true ergibt.
While
while (Test) { Anweisungen; }
Zuerst wird die Test durchgeführt. Ergibt dieser true werden die Anweisungen ausgeführt und dann wieder der Test. Anweisungen -> Test wird so lange wiederholt, wie Test true ergibt.
Schleifenabbruch
Ein Schleifenablauf kann durch 2 Befehle abgebrochen werden:
- break: bricht die Schleife ab und führt den Code danach aus.
- continue: bricht diesen Durchgang der Schleife ab und geht sofort zum nächsten Durchgang
Exception
function divide(a,b){ if(b === 0){ throw { name: 'MathError', message: 'Division by zero' } } return a/b; } try { console.log(divide(3,4)); console.log(divide(3,0)); } catch (e) { console.log(e.name + ": " + e.message); }
- mit throw kann eine Exception geworfen werden.
- throw muss ein Objekt-Literal mit den Eigenschafen name und message zurückgeben. Zusätzliche Eigenschaften sind erlaubt.
- mit einem try catch kann die Exception gefangen werden. Hierbei wird das Objekt-Literal übergeben
- ein Abfangen nur von bestimmten Exceptions ist nicht möglich, kann aber über die Auswertung des name-Attributs simuliert werden.