Кантэкст непрывязанай функцыі ў 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 можа прымаць рознае значэнне. Усё залежыць ад кантэксту, у якім была выклікана функцыя.