Zugriff auf externe Variablen von Funktionen in JavaScript

Betrachten wir den folgenden Code:

javascriptlet num = 1; // Wert der Variable setzen

function func() {
  console.log(num); // Wert in der Konsole ausgeben
}

func(); // Funktion aufrufen

Wie ich bereits früher erwähnt habe, muss der Wert der Variable nicht unbedingt vor der Definition der Funktion stehen, Hauptsache, er steht vor ihrem Aufruf:

javascriptfunction func() {
  console.log(num);
}

let num = 1;
func();

Eigentlich ist das nicht ganz richtig. Unsere Funktion kennt den Wert der Variable num sogar vor ihrem Aufruf:

javascriptlet num = 1;

function func() {
  console.log(num); // Funktion weiß bereits, dass num = 1
}

Hier ein komplexeres Beispiel:

javascriptlet num = 1; // Die Funktion erfährt zu diesem Zeitpunkt, dass num = 1

function func() {
  console.log(num);
}

num = 2; // Die Funktion erfährt zu diesem Zeitpunkt, dass num = 2

Fügen wir Funktionsaufrufe hinzu:

javascriptlet num = 1; // Die Funktion erfährt zu diesem Zeitpunkt, dass num = 1
func(); // gibt 1 aus

function func() {
  console.log(num);
}

func(); // gibt 1 aus
num = 2; // Die Funktion erfährt zu diesem Zeitpunkt, dass num = 2
func(); // gibt 2 aus

Noch einmal: Eigentlich kennt die Funktion die Werte externer Variablen, selbst ohne aufgerufen worden zu sein.