CodeBlanks Logo Icon CodeBlanks

Rest ile esnek parametreler

JavaScript kursu · İleri seviye · Ders 32/100

Rest parametresini destructuring ile birlikte kullanmayı ve arguments nesnesinden farkını öğrenirsin.

Rest parametresi

Rest parametresi de üç noktayla yazılır; ama bu kez fonksiyon tanımında parametre tarafındadır. function sumAll(...numbers) yazdığında numbers, gelen tüm argümanları tutan gerçek bir dizi olur.

Eski arguments nesnesi dizi değildir; .map veya .reduce çalışmaz. Rest parametresi ise tam bir dizi olduğundan tüm dizi metotları kullanılabilir. Bu yüzden modern kodda rest tercih edilir.

Rest ile destructuring

Rest, destructuring içinde de çalışır. const [first, ...rest] = colors yazdığında first ilk elemanı alır; rest kalanların tamamını yeni bir dizi olarak tutar.

Aynı mantık nesnelerde de geçerlidir: const { name, ...others } = user ile name'i ayırıp geri kalan tüm özellikleri others içinde toplayabilirsin. Rest her zaman son konumda olmalıdır.

Uygulama Esnek sözcük birleştirici

joinWords(separator, ...words) adında bir fonksiyon yaz. İlk parametre bir ayraç string'i, ardından istediğin kadar sözcük argümanı gelir. words dizisinin .join(separator) metodunu kullanarak tüm sözcükleri birleştir ve sonucu döndür. Sonra fonksiyonu en az üç sözcükle çağır ve console.log ile yazdır.

Örnek çözümü göster
function joinWords(separator, ...words) {
  return words.join(separator);
}
console.log(joinWords("-", "elma", "armut", "kiraz"));

Kendini test et

  1. Rest parametresi ne döndürür?

    function sumAll(...numbers) {
      return numbers.length;
    }
    • Yalnızca tek bir argüman alır
    • Tüm parametreleri yok sayar
    • Eski bir sözdizimidir
    • Gelen argümanları gerçek bir dizi olarak toplar
    Cevabı göster

    Gelen argümanları gerçek bir dizi olarak toplar — Doğru. Rest bir dizi toplar; arguments'ten farkı budur.

  2. Rest kullanımlarını eşleştir

    ...args (parametre)
    Kalan argümanları toplar
    ...rest (destructuring)
    Kalan elemanları toplar
    gerçek dizi
    Rest parametresinin türü
  3. Fonksiyon imzasını tamamla

    function sumAll(____) {
      let total = 0;
      for (const n of numbers) total += n;
      return total;
    }
    console.log(sumAll(1, 2, 3));
    Cevabı göster
    function sumAll(...numbers) {
      let total = 0;
      for (const n of numbers) total += n;
      return total;
    }
    console.log(sumAll(1, 2, 3));

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