JavaScript-Tutorium:Grundlagen

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Version vom 6. Oktober 2014, 14:58 Uhr von Lawrence (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „=Ziel= =Einführung= ==Herkunft== * Erfunden von Brendan Eich bei Netscape * Adaptiert von Microsoft und JScript benannt * Erfährt anbieterspezifische Impl…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Ziel

Einführung

Herkunft

  • Erfunden von Brendan Eich bei Netscape
  • Adaptiert von Microsoft und JScript benannt
  • Erfährt anbieterspezifische Implementierungen (im sogenannten Browser-Krieg)
  • Wird überreicht an ECMA und seitdem standardisiert als ECMAScript

Charakteristika

  • Syntax is von C inspiriert
  • Hat nichts zu tun mit Java
  • Interpretiert, nicht kompiliert
  • Looses Typsystem
  • Objektorientiert
  • Unterstützt funktionales Programmieren
  • Läuft in vielen verschiedenen Umgebungen

Umgebungen

  • Browser: Firefox, Chrome, Internet Explorer, Safari, Opera
  • Server: NodeJS, Windows Scripting Host, Rhino
  • Applikationen: Adobe Photoshop, Quartz Composer
  • Betriebssysteme: GNOME

Engines

  • SpiderMonkey/JägerMonkey: Firefox, GNOME
  • V8: Chrome, NodeJS
  • Trident/Chakra: Internet Explorer

ECMAScript Versionen

  • ES3 ist vollständig implementiert von sehr vielen Browsern
  • ES5 ist vollständig implementiert von IE9+, FF4+, Chrome7+
  • ES.next/Harmony ist von keinem Browser vollständig implementiert

Schlüsselwörter

Folgende Wörter sind für die Sprache selbst reserviert und können nicht als Variablennamen verwendet werden:

abstract  
boolean break byte  
case catch char class const continue  
debugger default delete do double  
else enum export extends  
false final finally float for function  
goto  
if implements import in instanceof int interface  
long  
native new null  
package private protected public  
return  
short static super switch synchronized  
this throw throws transient true try typeof  
var volatile void  
while with

Die Auswahl der Begriffe orientierte sich stark an der Sprache Java. Einige der Begriffe finden in JavaScript aktuell keine Verwendung.

Variablen

In JavaScript wird das Schlüsselwort var verwendet um Variablen zu deklarieren (und zu initialisieren).

Definition und Zuweisung

Variablen können unmittelbar bei der Deklaration definiert werden:

var a = 1;
console.log(a);

Oder auch zu späteren Zeitpunkten:

var a;
a = 1;
console.log(a);

Eine Typabgabe ist nicht notwendig da es sich nicht um eine stark typisierte Sprachen handelt.

var a = 1;
a = true;
console.log(a);

Wie auch in anderen Sprachen sind Mehrfachzuweisungen erlaubt:

var e, f, g;
e = f = g = 3;
console.log(e);
console.log(f);
console.log(g);

Eine erneute Deklaration einer bereits bestehenden Variable führt zu keinem Fehler, sollte allerdings vermieden werden:

var h = false;
var h = true;
console.log(h);

Hoisting

Hoisting bedeutet dass der JavaScript-Interpreter alle Variablendefinitionen vor der eigentlichen Ausführung des Codes innerhalb der umgebenden Funktion nach oben an den Anfang schiebt. Dies betrifft ausschließlich die Definitionen, nicht aber die initiale Belegung mit einem Wert.

Augenscheinlich kann man Code schreiben der Variablen verwendet bevor sie überhaupt definiert sind. Da jedoch die initiale Wertzuweisung nicht vom Interpreter verschoben wird kann dies zu unerwarteten Resultaten führen.

console.log(a);
var a = 5;


Globale Variablen

In der Regel besitzt eine JavaScript-Umgebung ein globales Objekt, welches alle globalen Properties beherbergt. Im Browser wird das globale Objekt über die Variable `window` verfügbar gemacht. In Node.JS heisst es `global`. Falls eine Variable nicht innerhalb einer Funktion definiert wird, wird diese automatisch an das globale Objekt angehängt.

var a = new Object();
console.log('is a global?', a === window.a);
var someFunction = function() {
  var b = new Object();
  console.log('is b global?', b === window.b);
}
someFunction();

Achtung: Wird das Schlüsselwort `var` vergessen, wird die Variable implizit als globale Variable definiert.

var someFunction = function() {
  a = 1;
}
someFunction();
console.log(a);
console.log(window.a);