Sobes.tech
Junior

რა არის ცვლადების სქოპი (scope) JavaScript-ში?

sobes.tech AI

პასუხი AI-სგან

კონტექსტი განსაზღვრავს ცვლადების, ფუნქციებისა და ობიექტების ხელმისაწვდომობას კოდის გარკვეულ ნაწილში.

JavaScript-ში არსებობს რამდენიმე ტიპის კონტექსტი:

  • გლობალური კონტექსტი (Global Scope): ცვლადები, რომლებიც გამოაცხადეს ნებისმიერი ფუნქციის ან ბლოკის გარეთ, ხელმისაწვდომია ნებისმიერი კოდის ნაწილიდან.
  • ფუნქციური კონტექსტი (Function Scope): ცვლადები, რომლებიც გამოაცხადეს ფუნქციის შიგნით (ES6-მდე), ხელმისაწვდომია მხოლოდ ამ ფუნქციაში და მის შიგნით არსებულ ფუნქციებში.
  • ბლოკის კონტექსტი (Block Scope): ცვლადები, რომლებიც გამოაცხადეს let და const-ით ბლოკებში (მაგალითად, {} ან ციკლებში), ხელმისაწვდომია მხოლოდ ამ ბლოკში.

მაგალითი:

// გლობალური კონტექსტი
let globalVar = "მე გლობალური";

function someFunction() {
  // ფუნქციური კონტექსტი (ES6-მდე)
  var functionVar = "მე ფუნქციის შიგნით";
  console.log(globalVar); // ხელმისაწვდომია გლობალური ცვლადი

  if (true) {
    // ბლოკის კონტექსტი (let და const)
    let blockVar = "მე ბლოკის შიგნით";
    console.log(functionVar); // ხელმისაწვდომია ფუნქციური ცვლადი
    console.log(blockVar); // ხელმისაწვდომია ბლოკის ცვლადი
  }

  // console.log(blockVar); // შეცდომა: blockVar აქ არ არის ხელმისაწვდომი
}

someFunction();
// console.log(functionVar); // შეცდომა: functionVar აქ არ არის ხელმისაწვდომი

ცვლადების გამოცხადების საკვანძო სიტყვები და მათი გავლენა კონტექსტზე:

საკვანძო სიტყვა ES6-მდე კონტექსტი ES6-დან შემდეგ კონტექსტი
var ფუნქციური ფუნქციური
let - ბლოკური
const - ბლოკური

კონტექსტის გაგება მნიშვნელოვანია სახელების კონფლიქტების თავიდან აცილებისა და სუფთა, პროგნოზირებადი კოდის დაწერისთვის.