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:

javascriptfunction 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:

javascriptfunction func() {
  console.log(this); // reference til vinduet window
}

func();

Og hvis tilstanden er streng, vil this indeholde undefined:

javascript"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:

javascript"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.