Kontext nepřipojené funkce v JavaScriptu

Podívejme se, co se stane, pokud ve funkci uvedeme this, ale nepřipojíme ji k žádnému prvku, například takto:

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

func();

V tomto případě výsledek závisí na tom, zda je povolen přísný režim nebo ne. Pokud režim není přísný, pak v this bude uložen odkaz na window:

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

func();

Pokud je režim přísný, pak v this bude uloženo undefined:

javascript"use strict";

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

func();

Z výše uvedeného by se mohlo zdát, že v přísném režimu bude this vždy undefined. Ale kdepak! Pokud jednoduše vypíšeme this mimo funkci, pak v něm bude odkaz na window bez ohledu na režim:

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

Závěry

V jakékoli funkci lze napsat this, to nepovede k žádným chybám JavaScriptu. Ale co přesně bude uloženo v tomto this není definováno až do okamžiku volání funkce. A přitom při různých voláních funkce může this nabyvat různých hodnot. Vše závisí na kontextu, ve kterém byla funkce volána.