Kontext einer ungebundenen Funktion in JavaScript
Schauen wir uns an, was passiert, wenn man in einer Funktion
this verwendet, sie aber an kein
Element bindet, wie hier:
function func() {
console.log(this);
}
func();
In diesem Fall hängt das Ergebnis davon ab, ob
der strikte Modus
aktiviert ist oder nicht. Wenn der Modus nicht strikt ist,
wird this einen Verweis auf
window enthalten:
function func() {
console.log(this); // Verweis auf das Fenster window
}
func();
Wenn der Modus jedoch strikt ist, wird this
undefined sein:
"use strict";
function func() {
console.log(this); // undefined
}
func();
Aus dem oben Gesagten könnte man schließen, dass
im strikten Modus this immer
undefined sein wird. Weit gefehlt! Wenn man einfach
this außerhalb einer Funktion ausgibt, enthält es
einen Verweis auf window, unabhängig
vom Modus:
"use strict";
console.log(this); // in this befindet sich ein Verweis auf window
Schlussfolgerungen
In jeder Funktion kann this geschrieben werden,
was nicht zu JavaScript-Fehlern führen wird.
Aber was genau in diesem this gespeichert ist,
ist bis zum Aufruf der Funktion nicht definiert.
Darüber hinaus kann this bei verschiedenen Aufrufen der Funktion
unterschiedliche Werte annehmen. Es hängt alles
vom Kontext ab, in dem die Funktion aufgerufen wurde.