> For the complete documentation index, see [llms.txt](https://hanuce.gitbook.io/javascript-egitimi/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hanuce.gitbook.io/javascript-egitimi/kapsamlar-ve-gecerlilikler/global-kapsam.md).

# Global Kapsam

JavaScript'te programın kodlarını yazdığımız ana kapsam '***Global Kapsam***'dır.

{% code lineNumbers="true" %}

```javascript
"use strict" ;
// global kapsam
// kodlar
```

{% endcode %}

Global kapsamda tanımladığımız değişkenlere **programdaki bütün kapsamlardan erişilebilir.** Bunlara global değişken denir.

Global değişkene her kapsamdan erişilebilmesi ve değiştirilebilmesi sorunlar yaratabilir. Bu sebeple güvenlik açısından genelde global kapsamda değişken belirlemekten kaçınılır. Deneyiniz.

{% code lineNumbers="true" %}

```javascript
let globalDegisken = 'Global Değişken';
alert('Şu an Global kapsamdayız.');
alert(globalDegisken);

{
    // Blok Kapsamı
    alert('Şu an Blok kapsamdayız.');
    alert(globalDegisken);
}

function ornek() {
    // Fonksiyon Kapsamı
    alert('Şu an Fonksiyon kapsamındayız.');
    alert(globalDegisken);
}
ornek(); // Fonksiyonu çalışması için çağırdık.
```

{% endcode %}

{% hint style="info" %}
Örnekte gördüğünüz '**`function ornek() { }`** ' kısmını ileride işleyeceğiz. Şimdilik şunu bilmeniz yeterli; fonksiyonlar da süslü parantez içerdikleri için bir kapsam belirtirler.
{% endhint %}

Örneği deneyince sırasıyla tüm uyarıları alırsınız. Yani global kapsamda deklare edilen bir değişkenin programın tüm alt kapsamlarında da geçerli olduğunu gördük. Şu an aklınıza **`let`** sözcüğünün blok hassasiyeti olduğu gelebilir. Neden alt blok kapsamında çalıştığını sorgulayabilirsiniz.

Şöyle ki, global değişkeni alt blok kapsamında **`let`** ile **tekrar deklare ederseniz**, deklare ettiğiniz değişken global kapsamdakinden ayrı bir hafıza birimi olarak oluşturulur ve bu birime başvurulur. Global değişkeni **alt kapsamda yeniden deklare etmezseniz globaldeki ismi ve değeri ile doğrudan kullanabilirsiniz.** Deneyiniz.

{% code lineNumbers="true" %}

```javascript
let globalDegisken = 'Global Değişken';
{
    let globalDegisken = 'Artık Global Olmayan (Yerel) Değişken';
    alert(globalDegisken); // 'Yerel' değişken uyarısı alırız.
    //'globalDeğisken' ile artık sadece yerel olan değişkene erişebiliriz.
}
```

{% endcode %}
