> 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/degiskenler-variables/var-ile-degisken-deklare-etme-eski-yontem.md).

# var ile Değişken Deklare Etme - Eski Yöntem

Eski kullanım olan **`var`** deklaratif sözcüğü ile de değişken bildirebilirsiniz. Fakat **`var`** ile **`let`**'in birbirinden bazı farkları olduğunu bilmek gerekir. **`var`** bildirimi blok ve kapsam tanımaz. Hangi kapsamda bildirildiğine bakılmaksızın ana kapsamda bildirilmiş gibi olur ve her kapsamda aynı bellek birimini temsil eder. Yukarıda **`let`** ile yaptığımız örneği **`var`** ile yaparsak farklardan birini anlamış oluruz.

{% code lineNumbers="true" %}

```javascript
var isim = 'Script';
{
    var isim = 'Java';
    alert(isim); // İlk bu satır çalışır. 'Java'
}
alert(isim); // Sonra bu satır çalışır. Yine 'Java'
```

{% endcode %}

**`var`** sözcüğünün blok ve kapsam hassasiyeti yoktur. Değişkenlerin kapsam fark etmeksizin aynı bellek birimindeki değeri temsil etmesi yapılan her değişikliği bir öncekinin üzerine yazacağı için yapmak istediğinizden farklı sonuçlar görebilirsiniz fakat hata fırlatılmaz. Çünkü çalışma mantığı bu şekildedir.

**`var`** sözcüğünün **`let`** sözcüğünden bir farkı da **`var`** ile bildirilen bir değişkenin sonradan da **deklare** edilebilmesidir. Zaten kapsam tanımadığı için bütün bildirimler ana kapsam olarak ele alınır. Çok sayıda bildirim hata olarak fırlatılmaz. Dolayısıyla programcı aynı değişken ismini daha önce kullandığını fark edemez. Tekrar bildirince aynı bellek birimini kullanır ve eski değerin üzerine yazar.&#x20;

{% code lineNumbers="true" %}

```javascript
var isim = 'Java';
// kodlar
var isim = 'Script';
// kodlar
{
    var isim = 'Programlama Dili';
    // kodlar
}

alert(isim); // 'Programlama Dili' olarak görünür.
```

{% endcode %}

**`var`** ile **`let`** arasındaki bir fark da şudur. **`let`** ile bildirdiğiniz bir değişkeni bildirimden önce kullanırsanız hata fırlatılır. Fakat **`var`** ile bildirdiğiniz bir değişkeni bildirimden önce kullanırsanız **hata fırlatılmaz**. Sadece '**`undefined`**' (tanımlanmamış) bir verisi olur. Deneyiniz.

{% code lineNumbers="true" %}

```javascript
alert(isim); //Hata fırlatılmaz. 'Undefined' değeri alınır.
var isim = 'Javascript';
alert(isim); //'Javascript' değer alınır.
var isim = 'Programlama Dili';
alert(isim); //'Programlama Dili' değer alınır.
```

{% endcode %}
