Datentypen

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

Array, ist kein eigener Datentyp, jedoch ist ein Array äußerst wichtig.



Hier ein Beispiel
let x=2;
let y=3;
alert(x+y);
Hier werden numerische Zahlenwerte zugewiesen, 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");

In der Alert Box steht dann xy

Das Pluszeichen hat hier eine andere Bedeutung, es dient als Verkettungsoperator mit dem man Strings verknüpft oder Strings mit Number-Werten 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

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

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

typeof dient dazu

Beispiel

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 umwandeln / Casting

Man kann einen Datentyp umwandeln in einen anderen Datentyp. Das nennt man Casting. Mehr dazu hier

Nehmen wir an, aus einer prompt Box soll eine numerische Eingabe verwertet werden. Die Prompt Box liefert jedoch nur Strings, die man jedoch als numerischen Wert benötigt um etwas zu berechnen. Hier kommt dann das Casting ins Spiel. In der Variable wert hat man nun einen numerischen, berechenbaren Wert.

let eingabe = "3" ;
let wert = Number(eingabe);

Referenztypen und primitve Datentypen

Neben den primitiven Datentypen und den speziellen Datentypen (null, undefined) gibt es die Referenzdatentypen wie Object. Der Unterschied besteht darin, dass bei Referenztypen die Daten anders gespeichert werden als bei den primitiven Datentypen.

Nehmen wir folgendes Beispiel

let x = 3;
let y = x;
x = 5;
console.log(y); //3

Der Computer reserviert für jede Variable einen Speicherplatz. Wenn ich einer Variable eine andere Variable als Wert übergebe, wird nur der Wert der Variablen übergeben, nicht die Variable selbst.

Bei Referenztypen ist das anders. Wenn man ein Object einer anderen Variablen als Wert zuweist wird ein Zeiger auf das übergebene Objekt gelegt. Das bedeutet, wenn man eins der beiden ändert, ändert sich auch das andere.

let a={width: 100}
let b = a;
a.width = 1;
console.log(b.width); //1
b.width = 5;
console.log(a.width) //5

Bei Variablen primitiven Datentyps kopiert der Computer den gesamten Wert in die Speicheradresse.

Bei Variablen mit Referenztyp wird nur eine Referenz auf das übergebene Objekt gespeichert.


Objekte in Javascript siehe w3schools

Eigene Klassen und Objekte siehe w3schools


Number

Javascript Tipps