Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
JavaScript’te let, değeri sonradan değiştirilebilen bir değişken tanımlamak için kullanılan anahtar kelimedir. let ile tanımlanan değişken yalnızca oluşturulduğu blok içinde kullanılabilir. Bu nedenle modern JavaScript’te, değeri değişecek değişkenler için genellikle let, yeniden atanmayacak değişken bağları için ise const tercih edilir.

Temel kullanım şöyledir:

JavaScript:
let sayac = 1;
sayac = 2;

console.log(sayac);

Beklenen çıktı:

JavaScript:
2

İlk satırda sayac değişkeni oluşturulur ve 1 değeri atanır. İkinci satırda aynı değişkene 2 atanarak değeri değiştirilir. Başlangıç değeri yazılmadan let sonuc; tanımlandığında, bildirim satırı işlendiği andan sonra değeri undefined olur. Bu durum, bildirimden önceki temporal dead zone ile aynı değildir.

let nasıl çalışır?​


let blok kapsamlıdır. Bir blok, genellikle süslü parantezlerle ({}) oluşturulan kod alanıdır. if, for, while ve fonksiyon gövdeleri bu kapsamın sık görülen örnekleridir.

JavaScript:
let mesaj = "dış kapsam";

if (true) {
  let mesaj = "if bloğu";
  console.log(mesaj);
}

console.log(mesaj);

Çıktı sırasıyla if bloğu ve dış kapsam olur. İçerideki mesaj, dışarıdaki değişkenin değerini değiştirmez; ayrı bir değişkendir. Bu davranış, büyük kodlarda değişken adlarının farklı bloklarda güvenli biçimde kullanılmasına yardımcı olur.

let bildiriminin farklı durumları​


Bir değişkenin hangi satırda ve hangi kapsamda tanımlandığını birlikte değerlendirin:

Durumlet davranışıSonuç
Aynı değişkene yeni değer atamaİzinlidirİlk tanımdan sonra tekrar let yazılmaz
Aynı kapsamda aynı adı bildirmeİzinli değildirSyntaxError
İç blokta aynı adı bildirmeDış değişkeni gölgelerDış değer kendiliğinden değişmez
Bildirimden önce okumaBaşlatılmamış lexical bağa erişilirReferenceError

İç blokta aynı adın kullanılması, dış değişkenin değerini değiştirmez. Fakat gereksiz gölgeleme kodu okumayı zorlaştırabilir. Amacınız dış değişkeni güncellemekse başına yeniden let eklemeden atama yapın.

Uygulanabilir örnek: döngü sayacı​


Bir döngüde her turda değişen sayaç için let uygundur:

JavaScript:
for (let i = 0; i < 3; i++) {
  console.log(i);
}

console.log(typeof i);

Beklenen çıktı 0, 1, 2 ve son olarak undefined olur. Bu bağımsız örnekte başka bir i bildirimi olmadığı varsayılır; döngüdeki i yalnızca for kapsamındadır. Döngüden sonra i değerini kullanmaya çalışırsanız doğrudan değişkene erişim, ReferenceError üretir.

Sık yapılan hatalar​


Tanım öncesindeki temporal dead zone içinde typeof kullanımı da güvenli bir kaçış değildir; aynı kapsamda daha sonra bildirilen let değişkeni için ReferenceError oluşabilir. Bu durum, hiç bildirilmemiş bir adın typeof sonucunun undefined olmasından farklıdır.

let ile tanımlanan değişkeni aynı kapsamda ikinci kez tanımlamak SyntaxError üretir:
JavaScript:
let ad = "Ali";
let ad = "Veli";

Değişkeni tanımlanmadan önce kullanmak güvenli değildir:
JavaScript:
console.log(sayi);
let sayi = 10;

Bu örnekte ReferenceError: Cannot access 'sayi' before initialization hatası alınır. JavaScript bu dönemi temporal dead zone olarak ele alır. Çözüm, değişkeni kullanmadan önce tanımlamaktır.

Değişmeyecek değerler için sürekli let kullanmak kodun niyetini belirsizleştirir. Yeniden atama gerekmiyorsa const seçin.

Sık sorulan sorular​


let ile tanımlanan nesnenin içeriği değiştirilebilir mi?​


Evet. let ile tanımlanan değişkenin kendisine yeni bir nesne atayabilirsiniz; nesne içindeki özellikleri değiştirmek ise nesnenin sabit veya değişken olarak tanımlanmasından ayrı bir konudur. Yeniden atama gerekmeyen nesnelerde genellikle const kullanılır.

let global değişken oluşturur mu?​


Klasik bir tarayıcı script’inin üst düzeyindeki let, global lexical kapsamda bulunabilir; fakat globalThis nesnesine otomatik olarak aynı adlı özellik eklemez. JavaScript modülünün üst düzeyindeki bildirim ise modül kapsamındadır. Bu nedenle global kapsamla nesne özelliğini birbirine eşit kabul etmeyin.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic