
var, let ve const farkı çoğu zaman “ezber bilgi” gibi anlatılıyor. Ama mesele syntax değil, kodun nasıl davrandığı. Bu yazıda bu üç yapının gerçek farklarını ve neden önemli olduklarını basit ama net bir şekilde inceliyoruz.
JavaScript mülakatlarında klasik bir soru:
“var, let ve const farkı nedir?”
Genelde cevaplar da klasik:
var eski
let ve const yeni
const değişmez
Ama bu cevaplar konunun %20’si bile değil.
Asıl mesele şu:
🐜 kodunun nasıl davrandığını ne kadar anlıyorsun?
Bir değişken tanımlıyorsun.
Aslında yaptığın şey şu:
“Bunu nerede kullanabilirim?” ve
“Bu ne kadar değişebilir?”
var, let, const farkı tam olarak burada başlıyor.
Bu küçük örnek aslında her şeyi anlatıyor.
var → “ben her yerdeyim”
let/const → “ben sadece buradayım”
🐜 var kontrolsüz
🐜 let/const sınırları belli
Büyük projelerde bug’ların çoğu burada çıkar.
İkisi de hoisted.
Ama davranışları farklı.
var → “boş da olsa varım”
let/const → “tanımlanana kadar yokum”
Bu fark küçük değil.
Temporal Dead Zone aslında şunu diyor:
🐜 “tanımlamadan kullanma”
Bu bir kısıt değil.
Bu bir koruma mekanizması.
Bu çoğu kişinin yanlış bildiği yer.
🐜 const değeri değil
🐜 referansı sabitler
Bu “esneklik” değil.
Bu risk.
Aynı şeyi let ile yapamazsın.
Ve bu iyi bir şey.
Bu farkı bilmiyorsan:
🐜 async kodda bug yazarsın
🐜 ve debug etmesi saatlerini alır
Kural basit:
default → const
değişecekse → let
var → hiç girme
Bu konu “hangi keyword” konusu değil.
Bu konu şu:
🐜 kodun ne kadar öngörülebilir?
İyi sistemler:
sürpriz çıkarmaz
sınırları bellidir
davranışı nettir
var bu kuralları bozar.
let ve const bu kuralları korur.
Bu fark küçük görünür.
Ama:
scope hataları
async bug’lar
beklenmeyen davranışlar
genelde buradan çıkar.
Kısacası:
🐜 mesele syntax değil
🐜 mesele kontrol
Ve iyi mühendislik, kontrol edebildiğin sistemler kurmaktır.