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);
}İlgili JavaScript soruları
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.