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.
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
Es gibt also einen globalen Kontext und es kann mehrere Ausführungskontexte für Funktionen geben.
Der Ausführungskontext wird über 3 Dinge festgelegt.
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.