CodeBlanks Logo Icon CodeBlanks

Değişken gölgeleme

JavaScript kursu · Orta seviye · Ders 10/134

İç kapsamda aynı isimli değişken tanımlayarak dış değişkeni gölgelemeyi öğrenirsin.

Değişken golgeleme

Aynı isimli bir değişkeni iç kapsamda tekrar tanımlarsan, dış değişkeni gölgelersin (shadow). İç kapsam o ismi kullandığında artık yeni değişkeni görür; dış değişken dokunulmadan kalır.

Örneğin dışta let score = 10; yazıp sonra bir fonksiyon içinde let score = 50; yazarsan, fonksiyon içinde score 50 olur. Fonksiyon bittiğinde dıştaki 10 geri döner. Bu, isim yeniden kullanımı olarak da bilinir.

Golgeleme tehlikeleri

Golgeleme bazen yararlıdır; ama bilinçsiz kullanılırsa kodu okumayı zorlaştırır. Aynı ismi hem dışta hem içte kullanınca, okuyucu hangi değişkenin kullanıldığını anlamak için kapsamı dikkatle izlemelidir.

Özellikle var ile let'i aynı isimle karıştırırsan sürpriz sonuçlar çıkabilir. İç kapsam değişkenine farklı, açıklayıcı bir isim vermek çoğu zaman daha güvenlidir. Golgeleme yapacaksan bile kısa tut ve gerekçesini yorumla belirt.

Uygulama Dış değişkeni gölgele

Dışta let score = 10 tanımla. addBonus() adında bir fonksiyon yaz; içerde let score = 50 tanımlayarak dış score'u gölgelesin ve score + 5 döndürsün. Dışarıda önce console.log(addBonus()) ile fonksiyon sonucunu, sonra console.log(score) ile dış score'u yazdır.

Örnek çözümü göster
let score = 10;

function addBonus() {
  let score = 50;
  return score + 5;
}

console.log(addBonus());
console.log(score);

Kendini test et

  1. Bu kod ne yazdırır?

    let score = 10;
    function bonus() {
      let score = 50;
      return score;
    }
    console.log(bonus());
    • 10
    • 60
    • undefined
    • 50
    Cevabı göster

    50 — Doğru. bonus fonksiyonu içteki score'u döndürür.

  2. İç kapsamda gölgele

    let score = 10;
    function bonus() {
      let ____ = 50;
      return score;
    }
    Cevabı göster
    let score = 10;
    function bonus() {
      let score = 50;
      return score;
    }
  3. Senaryoyu sonucuyla eşleştir

    Dışta score=10, içte score=50
    İçeride 50 okunur
    Dışta score=10, içte tanım yok
    İçeride 10 okunur
    İçte tanım yok, dışta score yok
    ReferenceError
    Fonksiyon bitti, dış score=10
    Hâlâ 10 okunur

Orta seviye bölümündeki tüm dersler