Bu kodun çıktısı nedir? for döngüsünde var ile setTimeout.

Cevap

for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 0);
}

Çıktı: 3, 3, 3. var fonksiyon kapsamlıdır; üç callback de aynı i değişkenini paylaşır ve çalıştıklarında döngü bitmiş, i 3 olmuştur.

Çözümler:

// 1) let: her iterasyonda yeni bir bağlama (binding) oluşur
for (let i = 0; i < 3; i++) setTimeout(() => console.log(i), 0); // 0, 1, 2

// 2) IIFE ile closure
for (var i = 0; i < 3; i++) {
  ((j) => setTimeout(() => console.log(j), 0))(i);
}
  1. var, let ve const arasındaki fark nedir?KolayJavaScriptFrontend
  2. == ile === arasındaki fark nedir?KolayJavaScriptFrontend
  3. Closure nedir? Bir örnekle açıklayın.OrtaJavaScriptFrontend
  4. Aşağıdaki kodun çıktısı nedir? (Event loop)OrtaJavaScriptFrontend
  5. this anahtar kelimesi nasıl belirlenir? Arrow function'larda ne değişir?OrtaJavaScriptFrontend
  6. Bir debounce fonksiyonu yazın.ZorJavaScriptFrontend

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle