Seotud funktsiooni kontekst JavaScriptis

Vaatame, mis juhtub, kui funktsioonis kasutada this, kuid seda ei seota ühegi elemendiga, nagu siin:

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

func();

Sel juhul sõltub tulemus sellest, kas meil on ranget režiimi või mitte. Kui režiim ei ole range, siis this sisaldab viidet windowle:

javascriptfunction func() {
  console.log(this); // viit aknale window
}

func();

Kui režiim on range, siis this sisaldab undefined:

javascript"use strict";

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

func();

Eelnevast võib jääda mulje, et ranges režiimis on this alati undefined. Kuidas nii! Kui lihtsalt väljastada this funktsioonist väljas, siis on selles viide windowle sõltumata režiimist:

javascript"use strict";
console.log(this); // this sisaldab viidet windowle

Järeldused

Igas funktsioonis saab kirjutada this, see ei põhjusta JavaScriptis vigu. Kuid mis täpselt this sisu on, ei ole defineeritud enne funktsiooni käivitamist. Pealegi võib this erinevatel funktsiooni kutsetel omada erinevat väärtust. Kõik sõltub kontekstist, milles funktsiooni kutsuti.