Kontekst nevezane funkcije v JavaScriptu

Poglejmo, kaj se zgodi, če v funkciji navedemo this, vendar je ne povežemo z nobenim elementom, takole:

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

func();

V tem primeru je rezultat odvisen od tega, ali je strog naš način ali ne. Če način ni strog, bo v this shranjena referenca na window:

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

func();

Če pa je način strog, bo v this shranjen undefined:

javascript"use strict";

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

func();

Iz zgornjega lahko sklepamo, da bo v strogem načinu this vedno undefined. Kako pa ne! Če preprosto izpišemo this zunaj funkcije, bo vanj referenca na window neodvisno od načina:

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

Zaključki

V kateri koli funkciji lahko napišemo this, to ne bo povzročilo nobenih napak v JavaScriptu. Toda kaj točno bo ležalo v tem this, ni določeno do trenutka klica funkcije. Poleg tega lahko this ob različnih klicih funkcije sprejme različne vrednosti. Vse je odvisno od konteksta, v katerem je bila funkcija poklicana.