Konteks van 'n ongebonde funksie in JavaScript

Laat ons kyk wat gebeur as 'n funksie this gebruik, maar nie aan enige element gebind is nie, soos hier:

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

func();

In hierdie geval hang die resultaat af van of ons in 'n streng modus is of nie. As die modus nie-streng is, sal this 'n verwysing na window bevat:

javascriptfunction func() {
  console.log(this); // verwysing na venster window
}

func();

En as die modus streng is, sal this undefined wees:

javascript"use strict";

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

func();

Uit bogenoemde kan dit lyk asof this in streng modus altyd undefined sal wees. Moenie dink nie! As jy bloot this buite 'n funksie uitvoer, sal dit 'n verwysing na window wees, ongeag die modus:

javascript"use strict";
console.log(this); // in this is 'n verwysing na window

Gevolgtrekkings

Jy kan this in enige funksie skryf, dit sal nie enige JavaScript-foute veroorsaak nie. Maar wat presies in hierdie this sal wees, is ongedefinieerd totdat die funksie aangeroep word. Selfs met verskillende aanroepe van die funksie kan this verskillende waardes aanneem. Alles hang af van die konteks waarin die funksie aangeroep is.