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
var
ile 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/fonksiyon
kapsamı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.