JavaScript/Tutorials/Einstieg/Erste Schritte
Ein großer Vorteil am Programmieren mit JavaScript ist, dass man kaum Vorbereitungen benötigt.
Die bekannteste Möglichkeit, JavaScript-Programme auszuführen, besteht darin, sie in ein HTML Dokument einzubetten und dieses in einen JavaScript-fähigen Web-Browser zu laden. Diesen haben Sie bereits installiert – ansonsten könnten Sie diese Seite schließlich nicht anschauen.
Lediglich zum Erstellen der HTML-Dateien mit darin enthaltenem JavaScript empfiehlt es sich, anstelle des bereits installierten Editors (z. B. Notepad bei Windows) einen komfortableren Code-Editor zu installieren. Ein kostenloses Programm ist hier zunächst völlig ausreichend; für Windows sei hier exemplarisch Notepad++ genannt; für MacOS, Linux oder auch Windows ATOM.
Inhaltsverzeichnis
Anlegen eines Dokuments
Anhand dieses kleinen Scripts, das es so wohl in allen Sprachen gibt, sehen Sie, wie einfach es ist, ein kleines Programm in ihrem Browser zu starten:
<script>
alert('Hallo Welt!');
</script>
Speichern Sie das Script in einer Datei mit der Endung .htm
oder .html
ab und laden Sie es im Browser (i. d. R. über Datei → Datei öffnen). Obwohl doctype und html-Tag am Anfang des Dokuments fehlen, erkennt der Browser an der Dateiendung, dass der Inhalt nicht als reiner Text, sondern als HTML-Code behandelt werden soll. Der script-Tag leitet einen Script-Bereich ein, in den Sie Javascript-Code notieren und ausführen lassen können. Am Ende des Dokuments müssen Sie ihn wieder schließen. Der schließende html-Tag ist dagegen ebenfalls optional und kann weggelassen werden.
Verwendung von Variablen
Neben diesen Warnmeldungen können Sie auch Dialogfenster nutzen, in denen der Anwender Benutzereingaben vornimmt.
Die Eingabe des Benutzers wollen wir zunächst in einer sogenannten Variablen abspeichern. Eine Variable ist sozusagen ein einfacher Behälter für Daten – man kann Daten hineinschreiben und sie zu einem späteren Zeitpunkt im Programm wieder auslesen und damit arbeiten. Sie müssen nicht festlegen, für welchen Datentyp (z. B. Zahlen oder Text) der Behälter bestimmt ist. Eine JavaScript Variable kann Werte aller Datentypen speichern und passt sich bei Bedarf an.
<script>
let eingabe;
eingabe = prompt('Bitte geben Sie Ihren Namen ein!','');
alert('Hallo, ' + eingabe);
</script>
Dieses Programm fragt den Namen des Benutzers ab und begrüßt ihn dann persönlich.
Information: let oder var?
var
deklariert. 2015 wurde mit ES6 das Schlüsselwort
let
eingeführt. Variablen mit let
sind nur innerhalb ihres Anweisungsblocks gültig und daher sicherer, da sie nicht durch gleichlautende Variablen aus anderen Programmteilen überschrieben werden können.Dafür wird mit let
eine Variable mit dem selbst gewählten Namen eingabe
deklariert.
Im zweiten Schritt passieren zwei Dinge. Von links nach rechts gelesen, finden Sie hier zunächst eine Zuweisung an eine Variable. Zuweisungen haben die Form name = wert;
. Ein Wert kann eine Konstante sein oder durch den Aufruf einer Funktion ermittelt werden. Bei prompt handelt es sich um eine in JavaScript eingebaute Funktion. Sie öffnet ein kleines Fenster, in dem sich ein Informationstext, ein Eingabefeld sowie die Buttons OK und Abbrechen befinden. Dieser Informationstext sowie der anfängliche Inhalt des Eingabefeldes sind Werte, die man prompt()
zur Verfügung stellen muss, indem man sie innerhalb der Klammern durch Komma getrennt hinschreibt.
Wenn JavaScript eine Zuweisung ausführt, ermittelt es zuerst den Wert, der zugewiesen werden soll. In unserem Beispiel findet sich ein Funktionsaufruf. Daher erscheint das Eingabefenster, sobald JavaScript auf diese Zeile stößt. Nachdem Sie etwas eingegeben und OK geklickt haben, wird diese Eingabe von prompt
als Wert bereitgestellt und kann nun an die Variable eingabe
zugewiesen, das heißt: darin gespeichert, werden.
- Deklarieren Sie Variablen immer mit
let
, da Sie sonst globale Variablen erzeugen, die später evtl. ungewollte Konsequenzen nach sich ziehen. - Geben Sie Variablen selbsterklärende, sogenannte sprechende Namen, damit Sie in ein paar Wochen wieder erkennen können, was diese Variable beinhalten soll.
- Beachten Sie die Regeln für selbstvergebene Namen.
Vermeiden Sie nicht initialisierte Variablen, die Sie als Magic Number notiert haben:
// schlecht:
setTimeout(blastOff, 86400000);
// gut:
const MILLISECONDS_IN_A_DAY = 86400000;
setTimeout(blastOff, MILLISECONDS_IN_A_DAY);
Werte, die sich später nicht mehr ändern sollen, sind Konstanten und keine Variablen. Sie können mit dem Schlüsselwort const
deklariert werden.
Der strenge Modus
In JavaScript gibt es aufgrund der bewegten Geschichte mit vielen proprietären Methoden und der sehr einfachen Möglichkeit, globale Variablen einzuführen, viele potentielle Fehlerquellen.
Beispielsweise erzeugen Sie in JavaScript durch einem Tippfehler in einem Variablennamen eine neue, leere Variable, während die gewünschte Variable nicht verwendet wird. Ein solcher Fehler fällt häufig erst viel später auf und führt zu einem unerklärlichen Programmabbruch, den Sie erst mühselig debuggen müssen.
Deshalb wurde mit ECMAScript 5 der strenge Modus (strict mode) eingeführt, der eine standardisierte, um Fehlerquellen bereinigte, Teilmenge der Programmiersprache aktiviert. Der Versuch, eine unbekannte Variable zu verwenden, löst im strengen Modus sofort einen sogenannten ReferenceError
aus. Ist der strenge Modus nicht aktiviert, spricht man auch vom sloppy mode (schlampig, schluderig).
- Verwenden Sie den strengen Modus (
'use strict';
), um Referenzfehler durch fehlerhaft geschriebene Methoden oder Variablen auszuschließen.
Anweisungen
Jetzt können wir unser Programm ein bisschen verbessern:
1 <script>
2 'use strict';
3 let name = '';
4 name = prompt('Bitte geben Sie Ihren Namen ein!', '');
5 let ausgabe = 'Hallo ' + name + '!';
6 alert(ausgabe);
7 </script>
Durch 'use strict';
wird der strenge Modus eingeleitet, der eine genauere und sorgfältigere Programmierung erzwingt. In diesem strikteren Modus sind z. B. undeklarierte Variablen oder Anweisungen ohne abschließendes Semikolon verboten. In Zeile 3 wird eine Variable name
deklariert. In einer Wertzuweisung wird ihr als anfänglicher Wert eine leere Zeichenkette (String) zugewiesen.
Im Dialogfenster erscheint nun das Eingabefeld, das mit dem leeren String vorbelegt wird, also leer bleibt. Der eingegebene Wert überschreibt in der Anweisung in Zeile 4 den bisherigen Wert für name
.
Danach wird eine Variable ausgabe
deklariert, in der der Name und die vorgegebene Zeichenkette mithilfe des Zeichenkettenverknüpfungs-Operator + zusammengefügt werden. Anschließend wird diese mit alert()
ausgegeben.
Anhand dieser Zeilen können wir uns nun die Syntax von JavaScript anschauen:
Anweisungen werden von einem Zeilenumbruch oder einem Semikolon ( ;
) beendet.
Zeichenketten werden von Anführungszeichen ("..."
) oder Hochkommata ('...'
) umschlossen, da sie sonst als Variable oder Anweisung behandelt würden.
let ausgabe = 'Hallo ' + name + '!';
Diese Art der Verkettung von mehreren Teilzeichenketten mit Variablen ist ziemlich fehleranfällig. In der JavaScript-Version von 2015 wurden Schablonen (Template Literale) eingeführt, mit denen Sie einige Anführungszeichen und +
-Zeichen sparen können:
let ausgabe = `Hallo ${name}!`;
So können Zeichenketten einfacher zusammengefügt werden.
- Die Syntax der Schablonenliterale ist in Backticks eingeschlossen. Bitte lesen Sie den Artikel zu Template-Literalen, wenn Sie nicht wissen, wie Sie das Backtick eingeben können.
- Die Syntax-Platzhalter in Schablonenliteralen verwenden
${Ausdruck}
. - Innerhalb des Platzhalters können Sie einfache Werte, Variablen und sogar JavaScript-Ausdrücke verwenden.
Wir werden, wenn es sich anbietet, in den folgenden Kapiteln Schablonenliterale verwenden.
Name
ist nicht mit name
identisch. Sollten Sie in Ihrem Code die Groß-/Kleinschreibung versehentlich verwechseln, wird das Programm mit einem Referenzfehler abgebrochen werden, wenn es keine mit dieser Schreibweise definierte Variable gibt.