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 әртүрлі мән қабылдауы мүмкін. Бәрі функцияның қай контексте шақырылғанына байланысты.