Kontexten för en obunden funktion i JavaScript
Låt oss se vad som händer om vi använder
this i en funktion
men inte binder den till något
element, så här:
function func() {
console.log(this);
}
func();
I detta fall beror resultatet på om
vi har strikt läge
aktiverat eller inte. Om läget inte är strikt,
kommer this att innehålla en referens till
window:
function func() {
console.log(this); // referens till window
}
func();
Och om läget är strikt, kommer this att
innehålla undefined:
"use strict";
function func() {
console.log(this); // undefined
}
func();
Av ovanstående kan det verka som att
i strikt läge kommer this alltid att vara
undefined. Så är det inte! Om man bara
skriver ut this utanför en funktion, kommer det
att vara en referens till window oavsett
läge:
"use strict";
console.log(this); // i this finns en referens till window
Slutsatser
I vilken funktion som helst kan man skriva this,
detta kommer inte att leda till några JavaScript-fel.
Men vad exakt som kommer att finnas i detta this
är inte definierat förrän funktionen anropas.
Dessutom kan this vid olika anrop av funktionen
anta olika värden. Allt beror
på kontexten i vilken funktionen anropades.