JavaScriptда unbind қилинмаган функциянинг контексти

Келинг, функцияда 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 бўлади деб ўйлаш мумкин. Абдурa! Агар this-ни функция ташқарисида чиқарсак, унда режимимизга қарамай window-га ишора бўлади:

javascript"use strict";
console.log(this); // this-да window-га ишора

Хулоса

Ҳар қандай функцияда this ёзиш мумкин, бу JavaScript-да ҳеч қандай хатоларга олиб келмайди. Аммо, айнан шу this-да нима жойлашади функция чақирилган пайтгача аниқланмайди. Ҳаттоки, функциянинг ҳар хил чақирилишларида this турли хил қийматларни қабул қилиши мумкин. Ҳаммаси функция қайси контекстда чақирилганига боғлиқ.