Variablen und Funktionen welche Ausserhalb von Konstruktor
- Funktionen und Methoden definiert werden sind global verwendbar. Sie sind ohne vorangehendes Schlüsselwort var zu definieren, ausserdem
sind sie automatisch eine Eigenschaft des window Objekt.
Ausserhalb des Funktionskontextes zeigt this wie auch self
auf ebendieses window Objekt.
alert(this == self && this == window) // true
this.myGlobal = "global";
alert(myGlobal) // "global"
alert(this.myGlobal); // "global"
alert(self.myGlobal); // "global"
alert(window.myGlobal); // "global"
delete this.myGlobal;
this.myClass = function(){
myGlobal = "global";
}
this.demo = new myClass();
alert(this.myGlobal) // "global"
Somit können auch globale Variablen als assoziatives Array angesprochen werden. Dies gibt uns beispielsweise die Möglichkeit eine Funktion zu schreiben welche globale Variablen setzt bzw. ausliest.
this.setGlobalVar = function(name,value){
this[name] = value;
}
this.getGlobalVar = function(name){
return this[name];
}
this.setGlobalVar("global","somevalue");
alert(this.getGlobalVar("global")); // "somevalue"
Lokale Variablen oder Funktionen sind nur in der jeweiligen Funktion
in der sie definiert werden gültig. Ihnen wird mit Hilfe des Schlüsselwortes var
einen Wert zugewiesen. Der JavaScript - Interpret erzeugt beim Funktionsaufruf ein temporäres
Objekt in welchem die übergegeben Parameter mit dem arguments
Objekt sowie die lokalen Eigenschaften gespeichert werden. Nach verlassen der Funktion wird dieses
Objekt gelöscht und die darin enthaltenen Daten gehen verloren.
this.somefunction = function(){
var local = "local";
}
this.somefunction();
alert(local) // error
Bei verschachtelten Funktionen, haben die inneren immer Zugriff auf die lokalen Eigenschaften und Parameter der jeweiligen äusseren Funktion.
sayHello = function(name){
var local = "Hello";
var demo = function(){
return local + " " + name;
}
return demo();
}
alert(sayHello("marc")); // "Hello marc"