# Blok Kapsam

Javascript'te **her süslü parantez ( `{ }` )arası bir bloktur.** Blok kapsamda (alt kapsam) deklare edilen değişkenler 'yerel değişken' (local) olarak adlandırılır ve sadece kendi kapsamında geçerlidir.&#x20;

```javascript
// Bu örnekte hata fırlatılır. Çalışmaz.
{
    let yerelDegisken = 'Yerel Değişken';
}
alert(yerelDegisken); // Global kapsamda böyle bir değişken bildirilmedi.
```

Blok kapsamda deklare edilenler blok kapsamın tamamında geçerli olur. Yani kapsamın altındaki diğer kapsamlarda da geçerlidir. Deneyiniz.

{% code lineNumbers="true" %}
```javascript
// Kapsam içinde kapsam
{
    let yerelDegisken = 'Yerel Değişken';
    {
        alert(yerelDegisken);
    }
}
```
{% endcode %}

Burada da gördüğünüz gibi _**her kapsam bir alt kapsamın 'global' kapsamı sayılır**_**.** Bloklar iç içe uzayıp gidebilirler.

Bir kapsamın herhangi bir satırında **`var`** ile yaptığınız bildirimler **kapsamdaki kodların yürütülmesinden önce ele alınır**. Buna yukarı kaldırma (**hoisted**) denir. Örnek yürütme:

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th data-hidden></th><th data-hidden></th><th data-hidden></th></tr></thead><tbody><tr><td><pre class="language-javascript"><code class="lang-javascript">// Yazılan Kod
let dil = 'JS';
const ulke = 'TR';
alert('Uyarı!');
var isim = 'Asya';
function foo() {
    alert('FOO Fobnksiyonu');
}
var soyisim = 'GÜN';
</code></pre></td><td>sadsad</td><td>sadsad</td><td></td></tr><tr><td><pre class="language-javascript"><code class="lang-javascript">// Yukarı Kaldırılan Kod
var isim = undefined;
var soyisim = undefined;
function foo() {
    alert('FOO Fobnksiyonu');
}
// yukarı kaldırma bitti
let dil = 'JS';
const ulke = 'TR';
alert('Uyarı!');
var isim = 'Asya';
var soyisim = 'GÜN';
</code></pre></td><td></td><td></td><td></td></tr></tbody></table>

Kullanıcı tarafından oluşturulan fonksiyonlar da yine yukarı kaldırılır.
