# JavaScript'de Değişkenler

Javascript’te değişken tanımlamak için `var`, `let` ve `const` anahtar kelimeleri kullanılır. Bu anahtar kelimeleri kullanırken doğru seçim yapmak kodun okunabilirliği ve yönetilebilirliği açısından önemlidir. Bu yazıda, bu üç anahtar kelimenin ne zaman ve nasıl kullanılacağı hakkında bilgi edineceksiniz.

## `var`

`var`, Javascript’in en eski değişken tanımlama anahtar kelimesidir. Bu anahtar kelimesiyle tanımlanan değişkenlerin kapsamı, tanımlandığı fonksiyonun kapsamı veya en üst düzey (global) kapsamdır. Yani `var` ile tanımlanan bir değişkenin fonksiyonun dışında tanımlanması durumunda, bu değişken tüm kodda erişilebilir hale gelir.

```javascript
var x = 10;
function sayHello() {
  var y = 5;
  console.log(x + y);
}
sayHello(); // 15
console.log(x); // 10
```

Yukarıdaki örnekte `var` anahtar kelimesiyle tanımlanan `x` değişkeni fonksiyonun dışında tanımlanmıştır ve tüm kodda erişilebilir hale gelmiştir. `y` değişkeni ise `sayHello()` fonksiyonunun içinde tanımlanmıştır ve sadece bu fonksiyonun kapsamı içinde erişilebilirdir.

`var` anahtar kelimesiyle tanımlanan değişkenler, tanımlandıkları kapsamda herhangi bir yerde tekrar tanımlanabilirler. Bu özellik, hatalı kodların ortaya çıkmasına neden olabilir.

```javascript
var x = 10;
var x = 20; // Hata vermez
console.log(x); // 20
```

## `let`

`let`, ECMAScript 6 ile birlikte tanıtılan bir anahtar kelimedir. `var` ile benzer şekilde değişken tanımlamak için kullanılır. Ancak `let` ile tanımlanan değişkenlerin kapsamı, tanımlandığı blok (if, for, while, vb.) veya fonksiyon kapsamıdır.

```javascript
function sayHello() {
  let x = 10;
  if (true) {
    let y = 5;
    console.log(x + y);
  }
  console.log(x); // 10
  console.log(y); // Hata verir
}
sayHello(); // 15
```

Yukarıdaki örnekte `let` anahtar kelimesiyle tanımlanan `x` ve `y` değişkenleri `sayHello()` fonksiyonunun kapsamı içinde.

Diğer bir farklılık da bu değişkenlerin "scope"larıdır. Bir değişkenin kapsamı, değişkenin nerede tanımlandığına ve hangi anahtar kelimeyle tanımlandığına bağlıdır.

Var anahtar kelimesi ile tanımlanan değişkenlerin kapsamı, fonksiyon kapsamıdır. Yani bir değişken fonksiyon içinde tanımlandıysa, o değişken yalnızca o fonksiyon içinde kullanılabilir.

```javascript
function example() {
  var x = 10;
  console.log(x); // 10
}
console.log(x); // ReferenceError: x is not defined
```

Let ve const anahtar kelimeleri ile tanımlanan değişkenlerin kapsamı, blok kapsamıdır. Yani bir değişken herhangi bir süslü parantez içinde tanımlandıysa, yalnızca o süslü parantez içinde kullanılabilir.

```javascript
if (true) {
  var x = 10;
  let y = 20;
  const z = 30;
  console.log(x, y, z); // 10 20 30
}
console.log(x); // 10
console.log(y); // ReferenceError: y is not defined
console.log(z); // ReferenceError: z is not defined
```

Görüldüğü gibi, var anahtar kelimesi ile tanımlanan değişkenler blok kapsamına sahip değildir. Bu nedenle, bir değişkenin farklı yerlerde farklı değerler alması gibi hatalı durumlar ortaya çıkabilir.

Let ve const anahtar kelimeleri, kodun daha okunaklı ve hatasız olmasını sağlar. Ancak, let anahtar kelimesi ile tanımlanan değişkenlerin değeri sonradan değiştirilebilirken, const anahtar kelimesi ile tanımlanan değişkenlerin değeri değiştirilemez. Bu nedenle, eğer bir değişkenin değerinin değişmemesi gerekiyorsa const kullanmak daha uygundur.

Sonuç olarak, JavaScript'te değişken tanımlamak için var, let ve const anahtar kelimeleri kullanılır. Bunların her biri farklı kapsamlara sahiptir ve ihtiyaca göre seçilir.
