JavaScript'te Scope (Kapsam)

JavaScript'te scope (kapsam), bir değişkenin erişilebilir olduğu alanı belirtir. Bu scope kavramı, programcının değişkenlerin hangi kod bloklarında kullanılabileceğini kontrol etmesine yardımcı olur. JavaScript'te scope kavramı üç farklı tipte karşımıza çıkar: Function Scope, Block Scope ve Lexical Scope.

Function Scope

Function Scope, bir değişkenin tanımlandığı fonksiyon içinde geçerli olduğu scope türüdür. Fonksiyon içinde tanımlanan bir değişken, fonksiyon dışındaki kod bloklarında erişilemez olacaktır.

function fonksiyonScope() {
    let isim = 'Ahmet';
    console.log(isim); // Ahmet
}

// console.log(isim); // Hata! 'isim' tanımlı değil

Block Scope

Block Scope, bir değişkenin tanımlandığı blok içinde geçerli olduğu scope türüdür. Blok, genellikle if, for, while gibi yapılar ile oluşturulur. ES6 ile birlikte let ve const kullanılarak tanımlanan değişkenler block scope'a tabidir.

if (true) {
    let yas = 30;
    console.log(yas); // 30
}

// console.log(yas); // Hata! 'yas' tanımlı değil

Lexical Scope

Lexical Scope (Statik Kapsam), bir değişkenin fonksiyonun tanımlandığı yere göre kapsamının belirlendiği scope türüdür. Yani bir fonksiyon kendi içinde tanımlanmış olmayan bir değişkene dış kapsamından erişebilir.

let isim = 'Ayşe';

function ismiYazdir() {
    console.log(isim); // Ayşe
}

ismiYazdir();

Özet

JavaScript'te scope kavramı, değişkenlerin erişilebilirliğini kontrol etmek için önemlidir. Function Scope, Block Scope ve Lexical Scope, değişkenlerin nerede tanımlı olduklarını ve nerede erişilebileceklerini belirleyen farklı kapsam türleridir. Bu kavramları doğru bir şekilde anlamak, programlama hatalarını azaltmaya ve kodun anlaşılabilirliğini artırmaya yardımcı olacaktır.