JavaScript’te değişken tanımlamak için kullanılan iki temel anahtar kelime var ve let’tir. İkisi arasındaki en önemli fark blok kapsamı (block scope) ve işlev kapsamı (function scope) ile ilgilidir.
-
Function Scoped (İşlev Kapsamı)
- Bir fonksiyon içinde tanımlanırsa sadece o fonksiyon içerisinde erişilebilir.
- Fonksiyon dışında
(global)tanımlanırsa proje genelinde her yerden erişilebilir.
-
Re-Declaration (Yeniden Tanımlama) İzni
- Aynı kapsam içinde tekrar
varile aynı isimde değişken tanımlanabilir. Bu da bazen beklenmeyen hatalara yol açabilir.
- Aynı kapsam içinde tekrar
Örnek Kod
var isim = "Derya";
if (true) {
var isim = "Mert";
console.log(isim); // Mert
}
console.log(isim); // Mert (değişti)Görüldüğü gibi, if bloğu içindeki var isim, dışarıdaki isim değişkenini de etkiliyor.
- Block Scoped (Blok Kapsamı)
- Kendisinin tanımlandığı blok içinde geçerlidir
(if, for, {} gibi). - Blok dışına çıktığınızda artık o değişken tanımlı değildir.
- Yeniden Tanımlama (Re-Declaration) Engeli
- Aynı kapsam içinde let ile tekrar aynı isimde değişken tanımlayamazsınız.
- Bu, hataların erken yakalanmasını sağlar ve kodun okunabilirliğini artırır.
örnek kod
let isim2 = "Derya";
if (true) {
let isim2 = "Mert";
console.log(isim2); // Mert
}
console.log(isim2); // Derya (etkilenmedi)Burada, if bloğu içindeki isim2 sadece o blokta geçerli olur. Dışarıya çıktığımızda “Derya” değerine sahip isim2 halen duruyor.
| Özellik | var |
let |
|---|---|---|
| Kapsam (Scope) | Fonksiyon veya global | Blok (if, for, vb.) |
| Yeniden Tanımlama | Mümkün | Mümkün değil (aynı blokta hata) |
| Hoisting (Yükseltme) | undefined değerine set edilir |
Tanımlamadan önce kullanılamaz (ReferenceError) |
| Kullanım Senaryosu | Eski kodlarla uyumluluk | Modern ve önerilen yaklaşım |
- var: Daha eski ve
global/fonksiyonkapsamına sahiptir. Aynı kapsamda yeniden tanımlanabilir, bu nedenle beklenmedik hatalara yol açabilir. - let: Blok kapsamına sahiptir.
Aynı isimle yeniden tanımlanamaz, genellikle daha güvenli ve öngörülebilir bir davranış sunar. Modern JavaScript projelerindelet(ve sabit değerlerde const)kullanımı önerilir. Böylece değişkenleriniz blok bazında yönetilir ve kodun anlaşılırlığı artar.