Контекст на несврзана функција во JavaScript

Ајде да видиме што ќе се случи ако во функција ја означиме this, но не ја врзуваме за ниту еден елемент, вака:

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

func();

Во овој случај, резултатот зависи од тоа дали строгиот режим е вклучен или не. Ако режимот не е строг, тогаш во this ќе се чува референца на window:

javascriptfunction func() {
  console.log(this); // референца на прозорецот window
}

func();

А ако режимот е строг, тогаш во this ќе се чува undefined:

javascript"use strict";

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

func();

Од горенаведеното може да изгледа дека во строгиот режим this секогаш ќе биде undefined. Како да не е така! Ако едноставно ја испечатиме this надвор од функција, тогаш во неа ќе има референца на window независно од режимот:

javascript"use strict";
console.log(this); // во this референца на window

Заклучоци

Во која било функција може да се напише this, ова нема да доведе до какви било грешки во JavaScript. Но, што точно ќе се наоѓа во овој this не е дефинирано до моментот на повикување на функцијата. Притоа, при различни повици на функцијата this може да има различна вредност. Сè зависи од контекстот во кој е повикана функцијата.