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