Datentypen


<script language="JavaScript" type="text/javascript">
var x, y;
x=prompt("Gib mal eine Zahl ein","");
y=prompt("Gib mir noch eine Zahl","");
alert(Number(x)+Number(y));
</script>



Das Window Objekt Prompt Box

prompt("fenstertext" , "eingabe");

Dieser Code erzeugt eine Promptbox oder Eingabebox. Wie man sieht kommt in die Klammern vor das Komma der Text, welcher in der Prompt Box angezeigt wird.
Hinter dem Komma kommen in der Regel nur 2 Anführungszeichen, es sei denn man will im Eingabefeld einen Text vorgeben.
Der Wert des Eingabefeldes wird an die Variable zurückgegeben.
Die Prompt Box gibt den Datentyp String zurück. Was heißt das denn schon wieder?

String & Number

Nicht nur in Javascript sondern auch in anderen Programmiersprachen gibt es verschiedene Datentypen, unter anderem eben auch String und Number.
Wenn ich beispielsweise 2+3 schreibe so ist das Ergebnis 5.
Bei 5 würde es sich um Number handeln. Die beiden Zahlen werden als Werte angesehen, mit denen man rechnen kann.
Würde man stattdessen schreiben "2"+"3" so wäre das Ergebnis "23". Der Datentyp wäre ein String. Die beiden Zahlen werden als Zeichen oder Zeichenketten angesehen, die man aneinanderreiht.
Die Prompt Box gibt immer String Werte zurück, welche in unserem Beispiel mittels Number() in eine numerische, rechnerische Zahl umgewandelt werden müssen.

Datentypen

In anderen Programmiersprachen bekommen Variablen beim Deklarieren einen Datentyp zugewiesen. Dadurch wird festgelegt wieviel Speicherplatz im Hauptspeicher für eine Variable oder für ein Literal reserviert wird. Ein Literal ist ein Wert. Es wird auch festgelegt was für eine Art von Information im Hauptspeicher gespeichert werden kann.

In Javascript haben wir eine lose Typisierung (loose Typing). Der Datentyp wird nicht festgelegt, er wird anhand des Wertes ermittelt und kann sich auch ändern.

In Javascript gibt es 6 Datentypen

 




Noch was, erinnern wir uns an das vorige Beispiel
x=2;
y=3;
alert(x+y);
Hier kamen die Werte der Variablen nicht von einer prompt box, sondern wurden im Script definiert und sind somit numerische Zahlenwerte, also Number.
Wenn ich bei diesem Beispiel die beiden Zahlen als String Zeichenketten behandeln will, so daß 23 (zwei drei) erscheinen würde, so müßte ich die beiden Zahlen in Anführungsstriche schreiben.

x="2";
y="3";

Was würde wohl passieren wenn man es stattdessen so schreiben würde?
alert("x"+"y");
Wenn du das auf Anhieb weißt hast du es kapiert.
Ich verrate es dir, in der Alert Box steht dann xy

Das Pluszeichen hat hier eine andere Bedeutung, es dient als Verkettungsoperator mit dem man Strings und auch Number-Werte verknüpft oder aneinanderreiht. Ändere das alert Objekt folgendermaßen.

alert("das Ergebnis ist: " + (Number(x)+Number(y)))

Zu Beginn ein String in Anführungsstrichen, gefolgt von einem Pluszeichen, welches hier als Verkettungsoperator dient, dahinter, in Klammern eingeschlossen, die Addition.

Das Pluszeichen hat 2 Bedeutungen:

  1. Es kann als Verkettungsoperator dienen, mit dem man Strings und andere Datentypen aneinanderreiht.
  2. Steht das Pluszeichen zwischen 2 Zahlenwerten (Number) oder 2 Variablen, die Zahlenwerte enthalten, dient es als Additionszeichen. Innerhalb von Strings, muss die Rechnung in Klammern eingeschlossen sein.

 

Primitive Datentypen und Referenztypen

Bei primitiven Datenypen wird der Wert gespeichert, bei Referenztpyen wie Object wird ein Zeiger auf das Objekt gespeichert. Das hat folgende Auswirkungen:

var x = 2;
var y = x;
x=4;
console.log(y) // Ausgabe: 2

Bei der Initialisierung von y wird der Wert der Variablen x in y gespeichert, aber es wird nicht ein Zeiger auf x gespeichert, denn dann würde sich der Wert von y ändern, wenn man den Wert von x ändert. Genau das ist bei Referenztypen der Fall.

Datentyp ermitteln

Es gibt 2 Operatoren, die der Ermittlung des Datentyps dienen, typeof und instanceof beides sind unäre Operatoren, das heißt sie benötigen nur einen Operanden.

typeof

Es werden die einzelnen primitven Datentype geliefert und bei allen Referenztypen der Wert object. Das lässt sich testen mit
console.log(typeof 3);

typeof true //boolen
typeof 34 //number
typeof "Hallo" // string
typeof {} // object
typeof function(){} // function
typeof [] // object

typeof dient dazu

instanceof

Object ist der Typ von dem alle Referenztypen ableiten. Mit typeof kann man den genauen Referenztyp nicht ermitteln. Dazu dient der instanceof Operator. Er lässt sich nur auf Werte, die einen Referenztyp enthalten anwenden.

var team = ["Klaus", "Willi", "Rita];

console.log(team instanceof Array); //true
console.log(team instanceof Object); // true
console.log(team instanceof Function); //false
console.log(34 instanceof Object); //false

Datentyp festlegen

Wenn man eine Variable deklariert und den Datentyp festlegen will, geschieht das in Javascript folgendermaßen. Das ist jedoch keine übliche Praxis und sollte unbedingt vermieden werden.

var breite = new Number;
var person = new String;


Objekte in Javascript siehe w3schools

Eigene Klassen und Objekte siehe w3schools

 


Javascript Tipps