JavaScript’de var, let ve const Arasındaki Farklar
Arkadaşlar herkese selamlar, bugün sizlere JavaScript’de en fazla kullanılan değişken tanımlayıcıların (var, let ve const )arasındaki farkları öğreneceğiz. Bu programlama dilini iyi bir şekilde öğrenmek ve ileride yapacağınız büyük projelerdeki karışıklıkları önlemek için bu farkları bilmek son derece önemlidir. Giriş kısmını çok uzatmadan başlayalım.
Get Abdullah Eren Evli’s stories in your inbox
Join Medium for free to get updates from this writer.
İlk olarak eski yöntem olan var değişken tanımlayıcısı olmasına rağmen neden let ve const diye iki farklı tanımlayıcı oluşturulmuş onu anlatayım. var tanımlayıcısını kullandığınızda kod editörünüz size genel olarak bir şeyleri yanlış yapsanız bile error vermez ama bu bizim için büyük bir sorundur. (Nasıl yani?) Eğer yaptığımız projede hata almamız gereken yerde hata almıyorsak, program error vermediği halde çalışmaya devam edip doğru sonucu vermiyorsa başımız belada demektir. Böyle hatalardan dolayı tüm projeye baştan sona bakmamız gerekebilir. Tam da böyle hatalardan dolayı modern yöntem olan let ve const tanımlayıcıları vardır. Tanımlayıcıların kaynağını anladığımıza göre aralarındaki farkları öğrenelim.
1. Kapsam
var fonksiyon kapsamlıdır. let ve const ise blok kapsamlıdır. Bunun anlamı şu: var tanımlayıcısını fonksiyon içerisinde herhangi bir yerde kullandığınızda bir altındaki blokta bile geçerlidir. bir örnek ile daha anlaşılır hale getireyim.
function test() {
if (true) {
var x = 10;
}
console.log(x); // ✅ 10
}Kodda gördüğünüz üzere var tanımlayıcısı tanımlandığı süslü parantezlerin dışında kullanılmasına rağmen error vermez ve sonucu gösterir. Eğer aynı kodu let veya const ile kullanmış olsaydık aşağıdaki sonucu alırdık.
function test() {
if (true) {
let y = 20;
}
console.log(y); // ❌ error: y is not defined (y değişkeni tanımlanmamış)
}2. Yeniden Tanımlama
var tanımlayıcısını kullanarak aynı değişkene farklı değer atamaları yapabilirsiniz. let ve const kullandığınızda ise buna izin verilmez. Değişkenimiz x olsun ve örnek üzerinden açıklayayım.
var a = 5;
var a = 10; // ✅ OK
a = 15; // ✅ OK
console.log(a) // 15Dediğimiz gibi var kullandığımızda bir sorun çıkarmaz. Ama var yerine let veya const kullanmış olsaydık, error: Identifier ‘a’ has already been declared (a değişkenine zaten bir değer atanmış). Hatasını alırdık.
3. Yukarı Taşınma (Hoisting)
JavaScript’te tüm değişken tanımlamaları (var, let, const) teknik olarak ‘hoist ’edilir yani yukarı taşınır. Ama nasıl çalıştıkları farklıdır.
console.log(a); // ✅ undefined (hata vermez)
var a = 5;var asatırı en başa taşınır, ama değeriundefinedolur.- Sonra
a = 5atanır.
let ve const da hoist edilir ancak Temporal Dead Zone (TDZ) nedeniyle tanımlandıkları satıra kadar kullanılamazlar. Bu yüzden erişmeye çalıştığınızda “ReferenceError” alırsınız.
console.log(b); // ❌ HATA: Cannot access 'b' before initialization
let b = 10;console.log(c); // ❌ HATA: Cannot access 'c' before initialization
const c = 20;4. Const ile Nesne ve Dizi kullanımı
Bu yazı için öğreneceğimiz son farka gelmiş bulunmaktayız. let ve var kullanırken elimizdeki diziyi direkt olarak farklı bir değere atama yapabiliyoruz. fakat const da buna izin verilmez. örnek ile açıklayayım.
const fruits = ["apple"];
fruits.push("banana"); // ✅ Allowed
console.log(fruits); // ["apple", "banana"]
// fruits = ["pear"]; // ❌ TypeError: Assignment to constant variableBu kodda gördüğünüz gibi diziye ekleme yapabiliyorsunuz. Diziden çıkarma da yapabilirsiniz farklı bir method kullanarak. Fakat diziye direkt olarak farklı bir atama gerçekleştiremezsiniz (verdiğiniz referans sabittir). let ve var’da ise bunu rahatlıkla yapabilirsiniz.
Bu yazımda var, let ve const arasındaki farkları elimden geldiğince sade bir şekilde anlatmaya çalıştım. Umarım sizin için faydalı olmuştur.
— Abdullah Eren Evli





