Sobes.tech
Junior

JavaScript'te kapsam nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

JavaScript'te kapsam (Scope), değişkenlerin ve fonksiyonların tanımlandığı ve erişilebilir olduğu bağlamdır.

Basitçe söylemek gerekirse, kodda bir değişkene veya fonksiyona nereden atıfta bulunulabileceğini belirler.

Birkaç farklı kapsam türü vardır:

  • Küresel Kapsam (Global Scope): Herhangi bir fonksiyon dışında tanımlanan değişkenler küresel kapsamda bulunur. Kodun herhangi bir yerinden erişilebilirler.
    // Küresel değişken
    let globalVar = "Her yerde görünürüm";
    
    function showGlobal() {
      console.log(globalVar); // Fonksiyon içinde erişilebilir
    }
    
    showGlobal();
    
  • Yerel (Fonksiyon) Kapsamı (Local/Function Scope): Bir fonksiyon içinde tanımlanan değişkenler, o fonksiyonun yerel kapsamındadır. Sadece bu fonksiyon ve iç içe fonksiyonlar tarafından erişilebilir, dışarıdan erişilemez.
    function showLocal() {
      // Yerel değişken
      let localVar = "Sadece burada görülebilir";
      console.log(localVar);
    }
    
    showLocal();
    // console.log(localVar); // Hata: localVar tanımlı değil
    
  • Blok Kapsamı (Block Scope): ES6 (ES2015) ile let ve const kullanımıyla tanıtılmıştır. {} içindeki, döngüler veya koşullar gibi bloklar içindeki değişkenler blok kapsamına sahiptir. var ile tanımlanan değişkenler blok kapsamına sahip değildir.
    if (true) {
      // Blok kapsamındaki değişken
      let blockVar = "Sadece bu blokta görünür";
      console.log(blockVar);
    }
    
    // console.log(blockVar); // Hata: blockVar tanımlı değil
    
    for (let i = 0; i < 2; i++) {
      // Döngüde blok kapsamındaki değişken
      console.log(i);
    }
    
    // console.log(i); // Hata: i tanımlı değil (let kullanıldıysa)
    

Ayrıca, Kapsam Zinciri (Scope Chain) kavramını anlamak da önemlidir. JavaScript, bir değişkenin değerini bulmaya çalışırken önce mevcut kapsamda arar. Bulamazsa, dış kapsama (üst) geçer ve bu şekilde devam eder, en sonunda küresel kapsama ulaşır. Değişken burada da bulunamazsa, ReferenceError hatası fırlatılır.