<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>
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?
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.
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.
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:
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.
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.
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
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
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