JavaScript'te var, let ve const kullanımı

2019-08-10

ES6 ile JavaScript'te değişken tanımlama olayına iki yeni yol daha eklendi: let ve const. JavaScript'i yeni öğrenmeye başlamış birisi için kafa karışıklığı yaratabiliyor bu durum. Gelin bu durumu hem onlar için hem de kendimiz için netleştirelim.

Aşağıdaki iki kod örneğinden görebileceğiniz gibi küçük ama çok önemli bir istisna dışında let hemen hemen var ile aynı işi yapar.

// "isim" adlı değişkenin değeri "Hakan"
var isim = 'Hakan';

// "isim" adlı değişkenin artık değeri "Murat"
var isim = 'Murat';

Yukarıdaki örnekte gördüğünüz gibi çoğu modern programlama dilinde göremeyeceğiniz bir şey gerçekleşiyor. Bir değişken yeni bir değer ile yeniden tanımlanıyor. JavaScript'in bu esnekliği geçmişte çok işe yaramış olabilir ama günümüzde kabul edilmeyen bir standart bu.

// "soyisim" adlı değişkenin değeri "Yılmaz"
let soyisim = 'Yılmaz';

// let ile bunu yaparsanız muhtemelen konsolda "syntax error" alacaksınız.
let soyisim = 'Canlı';

Tabi ki "soyisim" adlı değişkenin değerini daha sonra değiştirebilirsiniz fakat yukarıda yapmaya çalıştığımız gibi yeniden aynı değişken ismiyle değişken ataması yapamazsınız. Tabi bahsettiğimiz bu kural aynı scope içerisindeki değişkenler için geçerli bir kural.

// "soyisim" adlı değişkenin değeri artık "Canlı"
soyisim = 'Canlı';

Aynı değişken ismiyle farklı scopelar içerisinde _let_ ile tanımlamalar yapabilirsiniz.

// "soyisim" adlı değişkenin değeri "Yılmaz"
let soyisim = 'Yılmaz';

function getSoyisim() {
  // Fonksiyonlar farklı bir scope yarattığı için bu yapılabilir.
  let soyisim = 'Canlı';

  // Bu fonksiyon geriye "Canlı" değerini döndürür.
  return soyisim;
}

// Konsolda karşılaşıyor olacağımız değer "Yılmaz" olacak
console.log(soyisim);

Peki const'un olayı ne? const ile tanımladığınız bir değişkenin değerini daha sonra değiştiremezsiniz.

// "isim" adlı değişkenin değeri "Hakan"
const isim = 'Hakan';

// Aşağıdaki işlem konsolda hata mesajı görmenize sebep olur
const isim = 'Murat';

Yukarıdaki olaylar JavaScript'te primitive type'larda geçerli. Yani const ile bir dizi veya bir nesne tanımladığınızda bu yapıların içinde tuttuğunuz değerler ulaşılabilir ve değiştirilebilir olacak.

JavaScript kitap