Kontekst for uboundet funktion i JavaScript
Lad os se, hvad der sker, hvis du angiver
this i en funktion, men ikke binder den
til noget element, sådan her:
function func() {
console.log(this);
}
func();
I dette tilfælde afhænger resultatet af, om
vi er i
strikt tilstand
eller ej. Hvis tilstanden ikke er streng,
vil this indeholde en reference til
window:
function func() {
console.log(this); // reference til vinduet window
}
func();
Og hvis tilstanden er streng, vil this
indeholde undefined:
"use strict";
function func() {
console.log(this); // undefined
}
func();
Ud fra ovenstående kan det virke som om, at
i strikt tilstand vil this altid være
undefined. Sådan er det ikke! Hvis du blot
udskriver this uden for en funktion, vil det
være en reference til window uafhængigt
af tilstanden:
"use strict";
console.log(this); // i this reference til window
Konklusioner
I enhver funktion kan du skrive this,
det vil ikke føre til nogen fejl i JavaScript.
Men hvad der præcist vil være i denne this
er ikke defineret før funktionen kaldes.
Desuden kan this antage forskellige værdier
ved forskellige kald af funktionen. Alt afhænger
af den kontekst, hvori funktionen blev kaldt.