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-ը կարող է ընդունել տարբեր արժեքներ: Ամենը կախված է այն կոնտեքստից, որում ֆունկցիան է կանչվել: