JS – Teil 3: Datentypen und Hoisting

Zuletzt ging es in unserer kleinen Artikelserie um Variablen in JavaScript. Wie im Artikel erwähnt sind diese ein Grundbaustein in der Programmierung und auch relativ einfach zu benutzen, sie bestehen schließlich nur aus dem Schlüsselwort var, einem Namen und einem Wert. Hinter den Kulissen spielt sich aber noch einiges mehr ab, das wir verstehen sollten, um besser mit Variablen arbeiten zu können. Und diese Vorgänge besprechen wir in Teil 3 – Datentypen und Hoisting.
Klingt kompliziert aber keine Angst, wir gehen Schritt für Schritt vor.

Primitive Datentypen

Intern speichern Computer Zahlen im Binärsystem, also als 0 oder 1 – Strom aus und Strom an. Das ist für uns als Menschen etwas kompliziert, schließlich kennen wir doch ein paar Zahlen mehr als diese beiden. Damit der JavaScript Interpreter versteht, was wir genau von ihm wollen, gibt es daher Datentypen. Ein Datentyp beschreibt, welche Art von Wert in einer Variable liegt. Warum das so wichtig ist sehen wir etwas später bei den Strings.

In JavaScript gibt es fünf sogenannte primitive Datentypen, also quasi die Grunddatentypen: Number, Boolean, Null, Undefined und String. Auf einige davon gehen wir hier gleich ein, anderen widmen wir hingegen einen eigenen Artikel.

 

Datentyp Number

Dieser Datentyp beschreibt – wie wir uns vermutlich gedacht haben – eine Zahl. Das heißt nichts anderes als dass JavaScript automatisch hier von einer Zahl ausgehen wird und zum Beispiel Buchstaben keinen Sinn machen. Allerdings ist JavaScript schwach typisiert, das bedeutet eine Variable kann jeden Datentyp annehmen, den wir wollen. In anderen Programmiersprachen – wie zum Beispiel C – müssen wir den gewünschten Datentyp bei der Erstellung der Variable angeben und können danach nur Werte dieses Typs darin speichern. JavaScript übernimmt genau diesen Teil für uns und weißt den Variablen einen passenden Typ zu.
Warum das manchmal Probleme machen kann – vor allem wenn man nicht genau weiß, was man tut – lernen wir in einem späteren Artikel.

 

 

Datentyp Boolean

Boolean ist der vermutlich einfachste Datentyp, er enthält genau zwei Zustände: true und false (wir erinnern uns, 1 und 0). Trotzdem ist es einer der wichtigsten Datentypen, denn er wird uns noch in diversen Bereichen wie zum Beispiel Bedingungen, Schleifen und Operatoren begleiten.

 

Datentyp String

Strings sind nichts anderes als Text. Immer, wenn Text in einer Variable vorkommt, sprechen wir von einem String. Das Problem dabei: Wie vorher gelernt kann der Computer nur 0 und 1. Dank dem Binärsystem kann er daraus zwar Zahlen formen aber Zahlen sind immer noch kein Text. Wie versteht JavaScript denn nun, dass wir ihm den Text Hallo Welt vermitteln wollen?

Dafür sind die Zeichensätze da. Zeichensätze gibt es eine Menge, sehr populär ist UTF8. In einem Zeichensatz wird jedem Buchstaben eine Zahl zugewiesen, das kennen wir vielleicht von der Geheimsprache A ist 1, B ist 2 etc.
Das Problem an der Sache: Auch Punkt, Komma, Strichpunkt und alle anderen Zeichen benötigen eine Zahl. Und dann haben wir nur das lateinische Alphabet, in jedem Land kommen noch Sonderzeichen dazu: Ä, Ö, Ü. Und dabei sind arabisch, asiatisch und kyrillisch noch gar nicht dabei.

Wir sehen, Texte am Computer (und gerade im Web) sind kein einfaches Thema. Für den Anfang müssen wir aber nur eins wissen: Um JavaScript mitzuteilen, dass eine gewisse Zeichenkette ein String ist, benötigen wir einfach nur Anführungszeichen. Diese sind wichtig, schließlich ist unser Programmcode auch Text und wir müssen dem Interpreter klar machen, welcher Teil des Codes für die Logik wichtig ist und welchen Teil er einfach als Text akzeptieren soll. Beispielsweise könnte es passieren, dass wir das Wort var ausgeben möchten.
Machen wir das dem Interpreter nicht klar würde er versuchen, eine Variable zu erzeugen obwohl wir einfach nur einen Text möchten.

Die Datentypen Null und Undefined besprechen wir – wie erwähnt – in einem extra Artikel.

 

 

Hoisting in JavaScript

Hoisting ist ein kompliziertes Wort das einen einfachen Vorgang beschreibt. Bevor JavaScript wirklich damit anfängt, unseren Code auszuführen macht es quasi eine Warmup-Runde. Dabei geht es unseren Code durch und überprüft einerseits auf syntaktische Korrektheit, andererseits reserviert es aber auch gleich den Speicherplatz für alle Variablen und Funktionen. Das bedeutet, theoretisch können wir eine Variable bereits benutzen bevor wir sie deklariert haben:

Da die Ausführung erst nach dem Hoisting geschieht ist das in Ordnung. Trotzdem würde ich davon abraten, da es die Lesbarkeit des Codes stark einschränkt. Ein anderer Programmierer (oder wir selbst in sechs Monaten) würde nicht mehr verstehen, warum das funktioniert, bis er den ganzen Code angesehen hat. Versuchen wir hingegen auf eine Variable zuzugreifen, ohne sie jemals zu deklarieren, bekommen wir einen ReferenceError.

Achtung, dieses Hoisting bezieht sich nur auf die Deklaration einer Variable, nicht hingegen auf die Zuweisung!

In diesem Beispiel würde zwar der Speicherplatz für Variable x beim Hoisting reserviert werden, der Wert 10 wird aber erst nach dem console.log() reingeschrieben. Wir sehen im Browser also nur ein undefined.

 

Wie wir sehen ist Hoisting kein kompliziertes Prinzip aber trotzdem wichtig. Es ermöglicht uns unter anderem, Funktionen (die wir bald besprechen) irgendwo im Code zu benutzen und uns keine Sorgen darüber zu machen, wo wir sie definiert haben. Hast du noch Fragen zu den Datentypen oder zum Hoisting? Hinterlass mir gerne einen Kommentar unter dem Artikel.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*