Gültigkeitsbereich

In einer Javascript Anwendung wird der Code von oben nach unten abgearbeitet. Sofern ein Funktionsaufruf erscheint, springt der Interpreter in die Funktion und arbeitet diese von oben nach unten ab. Am Ende springt er wieder aus der Funktion heraus und arbeitet weitere Anweisungen ab. Liefert eine Funktion einen Rückgabewert kann mit diesem weitergearbeitet werden.

Dieser sogenannte Funktionsaufruf-Stack wird intern verwaltet. Es ist der Stapel von Funktionen und hieran kann man sehen, welche Funktion welche andere Funktion aufgerufen hat.

Ausführungskontext

Wenn der Interpreter in eine Funktion springt, befindet er sich in einem anderen Ausführungskontext. Das bedeutet welche Variablen, welche Parameter oder welche anderen Funktionen stehen hier zur Verfügung.

Hier gibt es drei Arten

Ausführungskontext des globalen Codes
Code der sich nicht in einer Funktion befindet ist globaler Code. Es gibt nur einen globalen Code und dieser ist von überall her erreichbar.
Ausführungskontext des Funktionaufrufs
Code innerhalb einer Funktion wird Funktionscode genannt. Der Code ist nur innerhalb der Funktion erreichbar. Es kommt darauf an, welche Variablen oder Argumente und welche anderen Funktionen innerhalb der Funktion zur Verfügung stehen.
Ausführungskontext der Funktion eval()
Die eval() Funktion dient dazu Code, der als String übergeben wird zu interpretieren. eval() ist mit Vorsicht zu gebrauchen.

Es gibt also einen globalen Kontext und es kann mehrere Ausführungskontexte für Funktionen geben.

Der Ausführungskontext wird über 3 Dinge festgelegt.

Gültigkeistbereich
Welche Variablen und Funktionen stehen zur Verfügung. Im Falle von Funktionscode welche Argumente stehen zur Verfügung.
Kette von Gültigkeitsbereichen
An welchen Stellen wird nach Variablen gesucht, wenn im Funktionscode Bezeichner erscheinen für die es keine Variablen gibt.
Kontextobjekt
Im Ausführungskontext gibt es die Eigenschaft this. Sie verweist auf das sogenannte Kontextobjekt. Sie bezieht sich immer auf den Kontext in dem sie definiert ist. Nicht auf den Kontext in dem eine Funktion aufgerufen wird.

Globale Variablen und Funktionen sind überall im Programm sichtbar, während Variablen und Funktionen, die innerhalb einer Funktion erstellt wurden, nur innerhalb der Funktion und innerhalb von Funktionen, die sich in dieser Funktion befinden sichtbar sind. Daraus ergibt sich eine Kette von Gültigkeitsbereichen, wenn mehrere Funktionen ineinander verschachtelt sind.


 

Javascript Tipps