Kontext neviazanej funkcie v JavaScripte

Pozrime sa, čo sa stane, ak v funkcii uviesť this, ale neviazať ju k žiadnemu prvku, takto:

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

func();

V tomto prípade výsledok závisí od toho, či máme prísny režim alebo nie. Ak režim nie je prísny, v this bude uložený odkaz na window:

javascriptfunction func() {
  console.log(this); // odkaz na okno window
}

func();

Ak je režim prísny, v this bude uložené undefined:

javascript"use strict";

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

func();

Z vyššie uvedeného by sa mohlo zdať, že v prísnom režime bude this vždy undefined. Ale nie! Ak jednoducho vypíšeme this mimo funkcie, bude v ňom odkaz na window nezávisle od režimu:

javascript"use strict";
console.log(this); // v this odkaz na window

Závery

V akejkoľvek funkcii môžeme napísať this, nespôsobí to žiadne chyby JavaScriptu. Ale čo presne bude v tomto this nie je definované až do momentu volania funkcie. A pri rôznych volaniach funkcie môže this nadobúdať rôzne hodnoty. Všetko závisí od kontextu, v ktorom bola funkcia volaná.