Kontekst til ubundet funksjon i JavaScript

La oss se hva som skjer hvis vi bruker this i en funksjon uten å binde den til noe element, slik:

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

func();

I dette tilfellet avhenger resultatet av om vi er i streng modus eller ikke. Hvis modusen ikke er streng, vil this inneholde en referanse til window:

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

func();

Og hvis modusen er streng, vil this inneholde undefined:

javascript"use strict";

function func() {
  console.log(this); // undefined
}

func();

Av ovenstående kan det virke som om this alltid vil være undefined i streng modus. Ikke sant! Hvis man bare skriver ut this utenfor en funksjon, vil den inneholde en referanse til window uavhengig av modus:

javascript"use strict";
console.log(this); // i this referanse til window

Konklusjoner

I enhver funksjon kan man skrive this, dette vil ikke føre til noen feil i JavaScript. Men hva som exactly vil ligge i denne this er ikke definert før funksjonen kalles. Dessuten kan this i samme funksjon ha forskjellig verdi ved forskjellige kall. Alt avhenger av konteksten funksjonen ble kalt i.