# Kapsam

Adres: https://softwaredictionary.org/tr/terimler/scope
Kategori: Programlamanın Temelleri
Son güncelleme: 2026-09-30
İngilizcesi: Scope
Türkçe karşılığı: faaliyet alanı
Okunuşu: skoup

Kısaca: Kapsam, bir programda değişken ya da fonksiyon gibi bir adın görünür olduğu ve kullanılabildiği bölgedir; her kod satırının nelere ulaşabileceğini belirler.

## Programlamada kapsam (scope) nedir?

Kapsam, bir programın neresinde bir adın kullanılabileceğine karar veren kurallar kümesidir. Bir fonksiyonun içinde tanımlanan değişken genellikle yalnızca o fonksiyonun içinde görünür; bir dosyanın ya da modülün en üst düzeyinde tanımlanan değişken ise daha geniş bir alanda görülebilir. Program bir adla karşılaştığında dil, bu adın hangi tanıma başvurduğunu bulmak için kapsam kurallarını kullanır.

Çoğu modern dil, statik kapsam olarak da adlandırılan sözcüksel kapsamı (lexical scope) kullanır; bu, görünürlüğün kodun nereden çağrıldığına değil, nerede yazıldığına göre belirlenmesi demektir. Kapsamlar kutular gibi iç içe geçer: iç bloktaki kod çevresindeki blokların değişkenlerini okuyabilir, ancak dıştaki kod içeri uzanamaz. JavaScript'te `let` ve `const` blok kapsamlıdır; bu yüzden bir `if` ya da `for` bloğunun içinde tanımlanan değişken blok bittiğinde ortadan kalkar, eski `var` ise tüm fonksiyona aittir. İç bir kapsam, dışarıda zaten var olan bir adı tanımladığında iç olan dıştakini gizler (shadowing).

Odaları olan bir bina yararlı bir benzetmedir: lobiye asılan bir not herkese görünürdür, ancak bir ofisin içindeki not yalnızca o ofisteki insanlara görünür. Her değişkeni işe yarayan en küçük kapsamda tutmak, bir programın ilgisiz bölümlerinin birbirlerinin verisini yanlışlıkla değiştirmesini önler; global değişkenlerden genellikle bu yüzden kaçınılır.

Kapsam sıklıkla ömürle (lifetime) karıştırılır. Kapsam, bir adın kaynak kodda nerede görülebildiğiyle ilgilidir; ömür ise değerin program çalışırken bellekte ne kadar süre var olduğuyla ilgilidir. İkisi farklı olabilir: bir closure, başka hiçbir kod o değişkene adıyla ulaşamasa bile, fonksiyonu döndükten sonra bir değişkeni canlı tutabilir.

## Önemli noktalar

- Kapsam, bir değişkenin ya da fonksiyonun adının kodun neresinde kullanılabileceğine karar verir.
- Çoğu dil, kodun nerede yazıldığına dayanan sözcüksel kapsamı kullanır.
- İç kapsamlar dıştaki değişkenleri görebilir, ancak dıştaki kod içeriyi göremez.
- JavaScript'te `let` ve `const` blok kapsamlı, `var` ise fonksiyon kapsamlıdır.
- Kapsam adların görünürlüğüyle, ömür ise değerlerin ne kadar süre var olduğuyla ilgilidir.

## Örnek: JavaScript'te global, fonksiyon ve blok kapsamı

```javascript
const appName = "Software Dictionary"; // global scope: visible everywhere below

function greet(user) {
  const message = "Hi, " + user; // function scope
  if (user === "admin") {
    let role = "owner"; // block scope: only inside this if
    console.log(role, appName);
  }
  // console.log(role); // ReferenceError: role is not defined here
  return message;
}
```

## Sık sorulan sorular

**Global kapsam ile yerel kapsam arasındaki fark nedir?**

Global kapsamdaki bir değişken tüm programda görünür; yerel bir değişken ise yalnızca tanımlandığı fonksiyonun ya da bloğun içinde görünür. Diğer kod onları yanlışlıkla değiştiremediği için yerel değişkenler tercih edilir.

**Sözcüksel kapsam ile dinamik kapsam arasındaki fark nedir?**

Sözcüksel kapsamda bir fonksiyon, yazıldığı yerdeki değişkenleri görür. Dinamik kapsamda ise çalışma zamanında onu çağıranın değişkenlerini görür; hemen hemen tüm modern diller sözcüksel kapsam kullanır, ancak Bash fonksiyonlarında `local` ile tanımlanan değişkenler dinamik davranır.

**Değişken gölgeleme (shadowing) nedir?**

Gölgeleme, iç bir kapsamın dış kapsamdakiyle aynı adda bir değişken tanımlamasıyla olur. İç kapsamın içinde ad yeni değişkene başvurur ve dıştaki, iç kapsam bitene dek gizlenir.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
