CodeBlanks Logo Icon CodeBlanks

for...of derinlemesine

JavaScript kursu · İleri seviye · Ders 44/100

for...of döngüsünün arka planda iterator protokolünü nasıl kullandığını öğrenirsin.

for...of nasıl çalışır

for...of döngüsü, iterable'ın [Symbol.iterator]() metodunu çağırarak bir iterator alır. Sonra her adımda next() yapar; done: true gelene kadar value değerini döngü değişkenine kopyalar. Bu yüzden dizeler, Map, Set ve kendi yazdığın iterable'lar üzerinde aynı sözdizimi çalışır.

Önemli ayrım: for...in nesne anahtarlarını, for...of ise değerleri gezer. forEach yalnızca dizi, Map ve Set gibi yerleşik koleksiyonlarda varken, for...of her iterable'da çalışır.

break ve continue

for...of içinde break ile döngüyü erken kesebilir, continue ile bir adımı atlayabilirsin. break çağrıldığında iterator sonlanır; JavaScript arka planda return() metodunu çağırıp kaynakları temizler.

Bu yüzden for...of yalnızca gezmek için değil, bir koşul sağlanınca durmak için de uygundur. forEach ise break desteklemez; erken çıkış için for...of kullanmalısın.

Uygulama Iterable sayan fonksiyon

countItems adında bir fonksiyon yaz; iterable parametresi alsın. İçinde let count = 0 ile sayaç aç. for...of ile iterable'ı gez ve her öğede count++ yap. Sonra count'u döndür. Fonksiyonu bir dizi ve bir dize ile çağırıp console.log ile sonuçları yazdır.

Örnek çözümü göster
function countItems(iterable) {
  let count = 0;
  for (const item of iterable) {
    count++;
  }
  return count;
}
console.log(countItems(["elma", "armut", "kiraz"]));
console.log(countItems("merhaba"));

Kendini test et

  1. Hangi veri türünde for...of çalışır ama forEach metodu yoktur?

    • Dizi
    • Dize
    • Map
    • Set
    Cevabı göster

    Dize — Doğru. Dizeler iterable'dır ama forEach metodu yoktur.

  2. for...of döngüsünü tamamla

    const text = "merhaba";
    for (const ch ____ text) {
      console.log(ch);
    }
    Cevabı göster
    const text = "merhaba";
    for (const ch of text) {
      console.log(ch);
    }
  3. Hangisi iterable değildir?

    • Dizi
    • Dize
    • Set
    • Sayı
    Cevabı göster

    Sayı — Doğru. Sayılar iterable değildir; for...of ile gezilemez.

İleri seviye bölümündeki tüm dersler