Bei der Deklaration und Definition von Variablen wurden bereits verschiedene Datentypen vorgestellt,
ebenso wie mit typeof der Typ des Wertes einer Variable ermittelt werden kann. Im Gegensatz zu einer Programmiersprache wie C,
geht JavaScript recht locker mit den unterschiedlichen Datentypen um. So erfolgt die Zuweisung eines Datentyps bei der
Initialisierung einer Variablen automatisch bzw. wird durch die Syntax vorgeben. Weiterhin kann der Datentyp des Wertes einer
Variablen relativ leicht verändert werden, insofern es die Abarbeitung eines Scripts oder die Programmausführung
verlangt.
Um es etwas einfacher auszudrücken, der Typ einer Variablen bestimmt sich in JavaScript nicht nach dem Typ der Variablen, mit
dem diese deklariert wurde, sondern die Variablen nimmt den Typ des Wertes an. Doch welche Daten gehören in JavaScript zu
welchen Datentypen?
Je nach Einteilung wird zwischen primitiven Datentypen und referenzierten Datentypen unterschieden, wobei sich die Einteilungen
etwas unterscheiden. So erfolgt im MSDN (Microsoft Developer Network) zum
Beispiel eine Unterteilung der primitiven Datentypen in primäre und spezielle Datentypen, wobei zu letzten die Datentypen Null
und Undefined gerechnet werden. Die folgende Einteilung entspricht hingegen in etwa der Einteilung, wie sie im MDN (Mozilla
Developer Network) zu finden ist (Stand: 2012).
Zu den primitiven Datentypen gehören String, Number, Boolean, Null und Undefined. Es sei angemerkt,
auch wenn die Datentypen im Text auf dieser Seite als Substantive behandelt und somit großgeschrieben wurden, bei der
Verwendung ist auf Kleinschreibung zu achten.
String: Der Datentyp String kann alle Zeichen, wie Buchstaben des Alphabets, Ziffern, Satzzeichen oder sonstige
Zeichen enthalten, aus denen eine Zeichenkette gebildet werden kann. Ein String ist bei der Zuweisung oder Ausgabe mit einfachen
oder doppelten Anführungszeichen zu begrenzen. Kommen innerhalb des Strings Zeichen vor, die in JavaScript eine besondere
Bedeutung besitzen, müssen diese durch einen Backslash maskiert werden, um keinen Fehler beim Interpreter auszulösen.
Number: Zum Datentyp gehören numerische Werte wie ganze Zahlen, die keine Nachkommastellen besitzen, doch
ebenso Gleitkommazahlen. Weiterhin ist eine Verwendung von Exponenten möglich. Ein Beispiel:
function BSPJS9a() { var extyp = 2e+3; // 2000 alert("2 x 10 x 10 x 10 = " + extyp); }
Boolean: Zu diesem Datentyp gehören nur die beiden booleschen Werte true und false,
die für wahr und unwahr bzw. für wahr und falsch stehen. Auf diesen beiden booleschen Werten beruhen praktisch alle
if-Statements.
Null: Beim Datentyp Null handelt es sich um ein Objekt mit dem Wert null. Dieser Datentyp weist auf einen
leeren Wert hin. Wird einer bereits deklarierten und definierten Variablen der Wert null zugewiesen, bleibt die Variable für
die weitere Verwendung erhalten. Unter anderem lassen sich so fließende Programmabläufe starten und stoppen.
Undefined: Dieser Datentyp weist darauf hin, dass mit einer Variablen gearbeitet, die nur deklariert aber nicht
definiert wurde oder etwas nicht Vorhandenes abgefragt wird, wie eine nicht vorhandene Eigenschaft eines Objektes.
Einige Beispiele zu den bisher erwähnten Datentypen:
function BSPJS9b() { var typ1 = "Ich bin ein String!"; var typ2 = 432.02; var typ3 = false; var typ4 = null; var typ5, typ; typ = "typ1 = " + typeof(typ1) + "\n"; typ += "typ2 = " + typeof(typ2) + "\n"; typ += "typ3 = " + typeof(typ3) + "\n"; typ += "typ4 = " + typeof(typ4) + "\n"; typ += "typ5 = " + typeof(typ5) + "\n"; alert(typ); } /* Ausgabe: typ1 = string typ2 = number typ3 = boolean typ4 = object typ5 = undefined */
Zu den referenzierten Datentypen gehört der Datentyp Object und der Datentyp Function. Ein Einsteiger,
der bereits über Grundkenntnisse in HTML verfügt und weiß, wie ein Image in dem Quelltext einer HTML-Datei eingebunden wird,
sollte sich bewusst sein, dass er nicht die eigentliche Image-Datei einbindet, sondern nur eine Referenz auf die Image-Datei
innerhalb eines Img-Tags. Die referenzierte Image-Datei verbleibt hingegen dort, wo sie auf dem Server abgelegt wurde. Ähnlich
verhält sich auch JavaScript, wenn es sich um Daten von Funktionen und Objekten handelt.
Object: Wird ein Objekt als Wert einer Variablen zugewiesen, so enthält der Wert der Variablen nicht das
komplette Objekt mit all seinen Eigenschaften, sondern nur eine Referenz auf das Objekt. Zu den Objekten zählen in JavaScript
so ziemlich alle Elemente, die über Eigenschaften und Funktionen verfügen, wie das Browserfenster (window) oder das
eigentliche HTML-Dokument, welches mit document angesprochenen werden kann.
Function: Wie bei den Objekten, so werden auch Funktionen referenziert. Wobei jedoch objektgebundene
Funktionen, mit denen bestimmte Eigenschaften eines Objektes angesprochen werden können, als Methoden bezeichnet werden und zum
Datentyp Object gehören.
Drei Beispiele zu den Datentypen Object und Function:
function BSPJS9c() { var typ1 = function TSET() {var tue = "nichts"}; var typ2 = new Array("Lisa","Bine","Erika"); var typ3 = document.getElementsByTagName("img")[0]; var typ; typ = "typ1 = " + typeof(typ1) + " - "+ typ1 + "\n"; typ += "typ2 = " + typeof(typ2) + " - "+ typ2 + "\n"; typ += "typ3 = " + typeof(typ3) + " - "+ typ3 + "\n"; alert(typ); } /* Ausgabe: typ1 = function - function TSET() {var tue = "nichts"; } typ2 = object - Lisa,Bine,Erika typ3 = object - [object HTMLImageElement] */
Wie bereits weiter oben erwähnt, bei der Initialisierung von Variablen mit einem Anfangswert nimmt die
jeweilige Variable automatisch den Typ des Wertes an. Im Gegensatz zu vielen anderen Programmiersprachen, muss bei der
Deklaration einer Variablen selbiger kein Datentyp zugewiesen werden. Die Variable bleibt auch nicht an einem Typ gebunden,
sondern kann bei der Abarbeitung des Codes mit einem neuen Wert einen anderen Typ annehmen. Je nach Anforderungen kann ebenfalls
der Wert erhalten bleiben und nur der Datentyp geändert werden.
Zugewiesene Datentypen lassen sich oftmals relativ einfach umwandeln, weiterhin stellt JavaScript einige Funktionen zur
Typumwandlung zur Verfügung.
Einige Beispiele:
function BSPJS9d() { var typstr1 = "1034"; var typstr2 = typstr1 *1; // Umwandlung String in Number var typnum1 = 999; var typnum2 = typnum1 +" und 1 Hase"; // Umwandlung Number in String var typnum3 = 1224; var typnum4 = String(typnum3); // Umwandlung Number in String var typnum5 = new String(typnum3); // Umwandlung in Object (String-Object) var typstr3 = "1644.02 und 2 Hasen"; var typstr4 = parseFloat(typstr3); // Umwandlung String in Number (Fließkommazahl) var typstr5 = parseInt(typstr3, 10); // Umwandlung String in Number (Integer-Wert) var typ; typ = "typstr1 = " + typeof(typstr1) +" - "+ typstr1 + "\n"; typ += "typstr2 = " + typeof(typstr2) +" - "+ typstr2 + "\n"; typ += "\n"; typ += "typnum1 = " + typeof(typnum1) +" - "+ typnum1 + "\n"; typ += "typnum2 = " + typeof(typnum2) +" - "+ typnum2 + "\n"; typ += "\n"; typ += "typnum4 = " + typeof(typnum4) +" - "+ typnum4 + "\n"; typ += "typnum5 = " + typeof(typnum5) +" - "+ typnum5 + "\n"; typ += "\n"; typ += "typstr4 = " + typeof(typstr4) +" - "+ typstr4 + "\n"; typ += "typstr5 = " + typeof(typstr5) +" - "+ typstr5 + "\n"; alert(typ); } /* Ausgabe: typstr1 = string - 1034 typstr2 = number - 1034 typnum1 = number - 999 typnum2 = string - 999 und 1 Hase typnum4 = string - 1224 typnum5 = object - 1224 typstr4 = number - 1644.02 typstr5 = number - 1644 */
Anmerkungen zu den Beispielen aus 9.4:
1. Im ersten Beispiel wird der String "1034" in einen numerischen Wert umgewandelt, in dem er einfach mit 1
multipliziert wird.
2. Im zweiten Beispiel wird die Zahl 999 in einen String umgewandelt, in dem die Zahl mit einem String verbunden wird.
3. Im dritten Beispiel erfolgt eine Typumwandlung von Number in String mit der JavaScript Funktion String(), die sowohl eine
Umwandlung in einen String, als auch in ein String-Objekt ermöglicht
4. Im vierten Beispiel erfolgt eine Typumwandlung eines Strings mit den JavaScript Funktionen parseFloat() und parseInt(). Die
Funktion parseFloat wandelt eine Zahl, die sich am Anfang eines String befindet, in eine Zahl mit Kommastellen um, parseInt
wandelt einen Wert hingegen nur in einen ganzzahligen Wert um. Der zweite Parameter (radix), im Beispiel eine 10, ist optional
und gibt das zu verwendende Zahlensystem an, wobei die 10 für das Zehnersystem bzw. Dezimalsystem steht.
Variablen « zurück / weiter » Operatoren
Einstieg in JavaScript
Listings & Tutorials
Übersicht