Rest ile esnek parametreler
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
-
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.
-
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ü
-
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));