Hinweis
Anders als Java bietet JavaScript keine besondere Formatierung für Kommentare zur Dokumentation. Für diesen Zweck können Sie jedoch Drittanbieterwerkzeuge wie JSDoc (http://usejsdoc.org
) nutzen.
1.4Variablendeklarationen
Mit der Anweisung let können Sie einen Wert in einer Variablen speichern:
let counter = 0
In JavaScript haben Variable keinen festen Typ. Daher können Sie in jeder Variablen Werte beliebigen Typs speichern. Beispielsweise ist es zulässig, den Inhalt von counter durch einen String zu ersetzen:
counter = 'zero'
Während es wohl kaum jemals sinnvoll sein dürfte, so etwas zu tun, erleichtern untypisierte Variablen es Ihnen in manchen Situationen, generischen Code zu schreiben, der mit unterschiedlichen Typen funktioniert.
Wenn Sie eine Variable nicht initialisieren, hat sie den besonderen Wert undefined:
let x // Deklariert die Variable x und setzt sie auf undefined
Hinweis
Vielleicht ist Ihnen aufgefallen, dass die vorstehenden Anweisungen nicht mit einem Semikolon abschließen. Ebenso wie in Python sind Semikolons am Zeilenende in JavaScript nicht erforderlich. Während in Python unnötige Semikolons als »unpythonisch« gelten, sind JavaScript-Programmierer darüber geteilter Ansicht. In Kapitel 2 werde ich die Argumente beider Seiten besprechen. Im Allgemeinen versuche ich mich aus solchen fruchtlosen Diskussionen herauszuhalten, aber in diesem Buch musste ich mich für eine Vorgehensweise entscheiden. Den semikolonfreien Stil habe ich aus einem ganz einfachen Grund gewählt: Code dieser Art lässt sich nicht mit Java oder C++ verwechseln. So lässt sich auf den ersten Blick erkennen, dass es sich um JavaScript handelt.
Wenn Sie den Wert einer Variablen niemals ändern, sollten Sie sie mit der Anweisung const deklarieren:
const PI = 3.141592653589793
Sollten Sie versuchen, den Wert in einer solchen Konstante zu ändern, tritt ein Laufzeitfehler auf.
In einer einzigen let- oder const-Anweisung können Sie auch mehrere Variable deklarieren:
const FREEZING = 0, BOILING = 100
let x, y
Viele Programmierer ziehen es jedoch vor, jede Variable in einer eigenen Anweisung zu deklarieren.
Vorsicht
Es gibt zwei veraltete Formen der Variablendeklaration, die Sie vermeiden sollten, nämlich die Deklaration mit dem Schlüsselwort var und die Deklaration ohne jegliches Schlüsselwort:
var counter = 0 // Veraltet
coutner = 1 // Aufgrund des Tippfehlers wird eine neue Variable
// erstellt!
Die Deklaration mit var weist einige erhebliche Mängel auf; mehr darüber erfahren Sie in Kapitel 3. Variable bei ihrer ersten Zuweisung zu erstellen, ist offensichtlich gefährlich, denn wenn Sie den Variablennamen falsch schreiben, wird eine andere Variable angelegt. Aus diesem Grund gilt diese Vorgehensweise im strikten Modus, in dem solche veralteten Konstrukte verboten sind, als Fehler. Wie Sie den strikten Modus einschalten, erfahren Sie in Kapitel 3.
Tipp
Wenn Sie sich nach den im Vorwort aufgeführten fünf goldenen Regeln richten, können Sie die Verwirrung, die solche klassischen JavaScript-Merkmale verursachen, größtenteils vermeiden. Die ersten beiden dieser Regeln lauten:
1 Deklarieren Sie Variablen mit let oder const, nicht mit var.
2 Verwenden Sie den strikten Modus.
1.5Bezeichner
Die Namen von Variablen müssen der allgemeinen Syntax für Bezeichner folgen. Bezeichner dürfen aus Unicode-Buchstaben, Ziffern sowie den Zeichen _ und $ bestehen. Ziffern dürfen nicht am Anfang stehen. In manchen Tools und Bibliotheken werden Namen mit $-Zeichen verwendet und manche Programmierer setzen einen Unterstrich an den Anfang oder das Ende von Bezeichnern, um private Merkmale zu kennzeichnen. Daher ist es am besten, wenn Sie bei den Namen, die Sie selbst festlegen, auf das Zeichen $ sowie auf _ am Anfang und Ende verzichten. Interne Unterstriche sind kein Problem, aber viele JavaScript-Programmierer bevorzugen die Camel-Case-Schreibweise mit Binnenmajuskel, um einzelne Namensbestandteile abzugrenzen.
Die folgenden Schlüsselwörter dürfen nicht als Bezeichner verwendet werden:
break case catch class const continue debugger default delete do
else enum export extends false finally for function if import in instanceof
new null return super switch this throw true try typeof var void while with
Im strikten Modus sind auch die folgenden Schlüsselwörter unzulässig:
implements interface let package protected private public static
Die folgenden Schlüsselwörter wurden erst kürzlich hinzugefügt. Sie können sie noch aus Gründen der Rückwärtskompatibilität als Bezeichner nutzen, sollten es aber lieber nicht tun:
await as async from get of set target yield
Hinweis
In Bezeichnern können Sie beliebige Unicode-Buchstaben und Ziffern verwenden, also beispielsweise auch Folgendes:
const
So etwas ist jedoch unüblich, da vielen Programmierern die Möglichkeiten zur schnellen Eingabe solcher Zeichen fehlen.
1.6Zahlen
JavaScript hat keinen expliziten Typ für Integer. Alle Zahlen sind Fließkommazahlen mit doppelter Genauigkeit. Natürlich können Sie ganzzahlige Werte verwenden; kümmern Sie sich einfach nicht um die Unterschiede zwischen 1 und 1.0. Aber wie sieht es mit Rundungen aus? Alle ganzen Zahlen zwischen Number.MIN_SAFE_INTEGER (–253 + 1 gleich –9.007.199.254.740.991) und Number.MAX_SAFE_INTEGER (+253 – 1 gleich 9.007.199.254.740.991) werden exakt dargestellt. Das ist ein größeres Intervall als das für Integer in Java. Solange die Ergebnisse innerhalb dieses Intervalls bleiben, sind arithmetische Operationen auf Integern exakt. Außerhalb dieses Bereichs dagegen kann es zu Rundungsfehlern kommen. Beispielsweise wird Number.MAX_SAFE_INTEGER * 10 zu