Lazy Ant Lab
var vs let vs const: Küçük Bir Detay Değil, Davranış Meselesi

var vs let vs const: Küçük Bir Detay Değil, Davranış Meselesi

engineering
26 Mar 2026

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?

Basit düşünelim

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.

Scope meselesi (en kritik nokta)

typescript

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.

Hoisting (ama gerçekten anlamak lazım)

typescript
typescript

İ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.

TDZ (kimse doğru anlatmıyor)

Temporal Dead Zone aslında şunu diyor:

🐜 “tanımlamadan kullanma”

typescript

Bu bir kısıt değil.
Bu bir koruma mekanizması.

const gerçekten “değişmez” mi?

typescript

Bu çoğu kişinin yanlış bildiği yer.

🐜 const değeri değil
🐜 referansı sabitler

Asıl problem: var neden tehlikeli?

typescript

Bu “esneklik” değil.
Bu risk.

Aynı şeyi let ile yapamazsın.
Ve bu iyi bir şey.

Gerçek hayatta patlayan örnek

typescript
typescript

Bu farkı bilmiyorsan:

🐜 async kodda bug yazarsın
🐜 ve debug etmesi saatlerini alır

Peki ne yapıyoruz?

Kural basit:

  • default → const

  • değişecekse → let

  • var → hiç girme

Lazy Ant yorumu

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.

Sonuç

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.

Yazarla bağlantı kur:

Okumaya Devam Et —