A nem kötött függvény kontextusa a JavaScriptben

Nézzük meg, mi történik, ha egy függvényben a this-et használjuk, de nem kötjük hozzá egyetlen elemhez sem, így:

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

func();

Ebben az esetben az eredmény attól függ, hogy szigorú a mód vagy sem. Ha a mód nem szigorú, akkor a this a window-re mutató hivatkozást fogja tartalmazni:

javascriptfunction func() {
  console.log(this); // a window objektumra mutató hivatkozás
}

func();

Ha viszont a mód szigorú, akkor a this undefined lesz:

javascript"use strict";

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

func();

A fentiekből az következhetne, hogy szigorú módban a this mindig undefined lesz. Dehogyis! Ha egyszerűen kiíratjuk a this-et a függvényen kívül, akkor az a window-re mutat, függetlenül a módtól:

javascript"use strict";
console.log(this); // a this a window-ra mutat

Összefoglalás

Bármely függvényben írhatunk this-et, ez nem fog JavaScript hibákat okozni. De hogy pontosan mi lesz a this-ben, az a függvény meghívásáig nem definiált. Ráadásul a függvény különböző hívásainál a this különböző értékeket vehet fel. Minden attól függ, hogy milyen kontextusban hívták meg a függvényt.