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-მა შეიძლება მიიღოს სხვადასხვა მნიშვნელობა. ყველაფერი დამოკიდებულია იმ კონტექსტზე, რომელშიც ფუნქცია გამოიძახეს.