CodeBlanks Logo Icon CodeBlanks

Rest parametreleri

...args ile değişken sayıda argüman almayı öğrenirsin.

Rest parametreleri

Rest parametresi, değişken sayıda argümanı tek bir dizi olarak toplar. Parametre adından önce ... yazılarak tanımlanır. Çağrılan fonksiyon bu argümanları dizi halinde alır.

Sözdizimi: function sum(...nums) { return nums.reduce((a, b) => a + b, 0); }. Bu fonksiyon sum(1, 2, 3) çağrısında nums değişkeni [1, 2, 3] olur; sonuç 6'dır. İstediğin kadar argüman geçebilirsin.

Rest parametresi her zaman parametre listesinin sonunda olmalıdır. Birden fazla rest parametresi yazılamaz. function f(a, ...rest) geçerlidir; function f(...rest, a) söz dizimi hatasıdır.

Rest ve arguments farkı

JavaScript'te rest parametresinden önce arguments adında eski bir nesne vardı. Tüm argümanları içerir ama gerçek bir dizi değildir; map, filter gibi dizi metotları çalışmaz. Modern kodda rest parametresi tercih edilir.

Rest parametresi gerçek bir dizidir: nums.map(...), nums.length, nums[0] gibi işlemler doğrudan çalışır. Ayrıca yalnızca 'kalan' argümanları alır; rest'ten önce gelen isimli parametreler dışarıda kalır.

Örnek: function f(first, ...rest). Burada first ilk argümanı, rest ise geri kalanların dizisini alır. f('a', 'b', 'c') çağrısında first='a', rest=['b','c'] olur.

Uygulama Değişken sayıda sayı topla

sum(...nums) fonksiyonunu tanımla. Gövdesi nums dizisini reduce ile (başlangıç 0) toplasın ve sonuçu döndürsün. sum(10, 20, 30, 40) çağrısının sonuçunu console.log ile yazdır.

Başlangıç kodu

index.js
// sum fonksiyonunu rest parametreyle tanımla ve çağrı sonuçunu yazdır

Örnek çözüm

index.js
function sum(...nums) {
  return nums.reduce((a, b) => a + b, 0);
}
console.log(sum(10, 20, 30, 40));

Beklenen çıktı

100

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Rest parçalarını eşle

Kavram Anlamı
... Rest operatörü
nums Toplanan argümanların adı
[1, 2, 3] nums değişkeninin değeri
son parametre Rest'in konumu

2 Rest parametresi ne toplar?

  • Tüm nesneleri
  • İlk argümanı
  • Kalan argümanları diziye Doğru cevap
  • Yalnızca sayıları

Açıklama: rest kalan tüm argümanları tek diziye toplar.

3 Reduce ile topla

Soru
function sum(...nums) {
  return nums.____((a, b) => a + b, 0);
}
Cevap
function sum(...nums) {
  return nums.reduce((a, b) => a + b, 0);
}

Açıklama: nums.reduce ile dizi tek değere indirgenir.

Başlangıç bölümündeki tüm dersler