Кантэкст непрывязанай функцыі ў JavaScript
Давайце паглядзім, што будзе, калі ў функцыі
паказаць this, але не прывязаць яе ні
да якім элементам, вось так:
function func() {
console.log(this);
}
func();
У гэтым выпадку вынік залежыць ад таго,
строгі
ў нас рэжым ці не. Калі рэжым нестрогі,
то ў this будзе захоўвацца спасылка на
window:
function func() {
console.log(this); // спасылка на акно window
}
func();
А калі рэжым строгі, то ў this будзе
захоўвацца undefined:
"use strict";
function func() {
console.log(this); // undefined
}
func();
З вышэйсказанага можа здацца, што
ў строгім рэжыме this заўсёды будзе
undefined. Як бы не так! Калі проста
вывесці this па-за функцыяй, то ў ім
будзе спасылка на window незалежна
ад рэжыму:
"use strict";
console.log(this); // у this спасылка на window
Высновы
У любой функцыі можна напісаць this,
гэта не прывядзе да якіх-небудзь памылак JavaScript.
Але вось што менавіта будзе ляжаць у гэтым this
не вызначана да моманту выкліку функцыі.
Прычым пры розных выкліках функцыі this
можа прымаць рознае значэнне. Усё залежыць
ад кантэксту, у якім была выклікана функцыя.