JavaScript’te değişkenler, veri saklamak ve bu verilere program boyunca erişmek için kullanılır. var
, let
ve const
anahtar kelimeleriyle değişken tanımlanabilir; ancak her birinin kapsamı (scope), yeniden atanabilirliği (reassignment) ve kullanım amacı farklıdır.
1. var
– Eski ama hâlâ desteklenen
- Fonksiyon kapsamına (function scope) sahiptir.
- Tekrar tanımlanabilir ve yeniden değer atanabilir.
ES6
öncesinde yaygın olarak kullanılıyordu.
2. let
– Modern ve güvenli kullanım
- Blok kapsamına (block scope) sahiptir.
if
,for
gibi bloklar içinde çalışır. - Tekrar tanımlanamaz ama yeniden değer atanabilir.
var
’a göre daha kararlı ve önerilen yöntemdir.
3. const
– Sabit değerler için
Dizi ve nesne türlerinde içerik değiştirilebilir ama değişkenin kendisi tekrar atanamaz.
Tanımlandıktan sonra değeri değiştirilemez.
Blok kapsamlıdır (let
gibidir).
var ile Değişken Tanımlama
JavaScript’in ilk sürümlerinde sadece var
anahtar kelimesi vardı. var
ile tanımlanan değişkenler fonksiyon scoped’dur, yani sadece tanımlandığı fonksiyon içinde geçerlidir. Fonksiyon dışında tanımlandığında ise global scope’a sahip olur. var
ile tanımlanan değişkenler hoisting (yukarı taşınma) özelliğine sahiptir; bu yüzden tanımlamadan önce bile kullanılabilirler ancak değeri undefined
olur.
Örnek:
var isim = "Furkan";
console.log(isim); // Çıktı: Furkan
let ile Değişken Tanımlama
ES6 (ECMAScript 2015) ile gelen let
, blok scoped (küme kapsamlı) değişken tanımlamaya izin verir. Bu, değişkenin sadece tanımlandığı {}
blok içinde geçerli olduğu anlamına gelir. Ayrıca, let
ile tanımlanan değişkenler hoisting’e uğrasa da, tanımlanmadan önce kullanmaya çalışırsanız hata verir (Temporal Dead Zone).
Örnek:
let yas = 25;
if (yas > 18) {
let mesaj = "Reşitsiniz";
console.log(mesaj); // Çıktı: Reşitsiniz
}
// console.log(mesaj); // Hata: mesaj tanımlı değil
const ile Değişken Tanımlama
const
da ES6 ile gelen bir diğer değişken tanımlama yöntemidir ve sabit değişkenler için kullanılır. Yani bir const
değişkeni tanımladıktan sonra değerini değiştiremezsiniz. Tıpkı let
gibi blok scoped’dur. Ancak sabit değişkenin içeriği (örneğin bir obje veya dizi) değiştirilebilir; sadece değişkenin kendisi yeniden atanamaz.
Örnek:
const PI = 3.14;
console.log(PI); // Çıktı: 3.14
// PI = 3.1415; // Hata: Atama yapılamaz
var, let ve const Arasındaki Temel Farklar
Özellik | var | let | const |
---|---|---|---|
Kapsam (Scope) | Fonksiyon | Blok | Blok |
Yeniden Atama | Mümkün | Mümkün | Mümkün değil |
Hoisting | Var (undefined) | Var (Dead Zone) | Var (Dead Zone) |
Yeniden Tanımlama | Mümkün | Mümkün değil | Mümkün değil |
Sonuç
JavaScript’te günümüzde let ve const kullanımı önerilir. var
eski kodlarda görülse de, modern projelerde blok kapsamlı ve hata yönetimi açısından daha güvenli olan let
ve const
tercih edilir. Değişmeyen değerler için const
, değişken değerler için ise let
kullanmak en iyi uygulamadır.