JavaScript’te Rest Operatörü
eminbasbayan

İçindekiler
Bu yazıda neler var?
Bir önceki yazımızda, destructuring özelliğini kullanarak dizilerden ve objelerden nasıl kolayca veri alabildiğimizi öğrenmiştik. Bu yazıda ise destructuring işlemini bir adım öteye taşıyıp, geri kalan değerleri yakalamamıza olanak tanıyan rest operatörü (...) özelliğini inceleyeceğiz.
Rest Operatörü Nedir?
JavaScript’te ... (üç nokta) sembolü iki farklı şekilde kullanılabilir:
- Rest operatörü olarak: Geriye kalan değerleri toplar.
- Spread operatörü olarak: Değerleri bir yapının içine “açar”.
Bu yazıda sadece rest kısmına odaklanacağız.
Rest operatörü, destructuring işlemi sırasında geri kalan tüm elemanları bir araya toplayarak tek bir dizi veya obje içinde tutmamızı sağlar.
Bunu özellikle, bir diziden veya objeden yalnızca belirli kısımları almak istediğimizde kullanırız.
Dizi Destructuring ile Rest Operatörü
Diyelim ki bir dizimiz var ve bu dizi öğrencilerin sınav notlarını içeriyor:
const sinavSonuclari = [85, 90, 78, 92, 88];Bu diziden sadece ilk üç sonucu almak, kalanları ise başka bir değişkende toplamak istiyorsak rest operatörünü şöyle kullanabiliriz:
const [birinci, ikinci, ucuncu, ...geriKalan] = sinavSonuclari;
console.log(birinci); // 85
console.log(ikinci); // 90
console.log(ucuncu); // 78
console.log(geriKalan); // [92, 88]Burada:
- İlk üç eleman ayrı değişkenlere atandı,
...geriKalanifadesi, dizinin geri kalan elemanlarını yeni bir dizi içinde topladı.
🧠 Not: Rest operatörü daima en sonda kullanılmalıdır.
Aksi halde JavaScript hata verir çünkü hangi elemanların “geri kalan” olduğunu anlayamaz.
Rest Operatörünü Kullanarak Dizi Elemanlarını Ayırma
Rest operatörü, özellikle uzun dizilerde bazı kısımları ayırıp kalanlarla işlem yapmak için çok kullanışlıdır.
Örneğin:
const isimler = ["Ali", "Ayşe", "Mehmet", "Zeynep", "Hasan"];
const [ilk, ikinci, ...digerleri] = isimler;
console.log(ilk); // Ali
console.log(ikinci); // Ayşe
console.log(digerleri); // ["Mehmet", "Zeynep", "Hasan"]Bu sayede, dizinin ilk iki elemanını ayrı olarak alırken, geri kalan tüm elemanları tek bir dizide tutabiliyoruz.
Obje Destructuring ile Rest Operatörü
Rest operatörü sadece dizilerde değil, objelerde (object) de kullanılabilir.
Bu durumda, objeden bazı alanları çıkarır, kalan tüm property’leri yeni bir obje içinde toplar.
Örneğin:
const kullanici = {
ad: "Selin",
yas: 24,
sehir: "İstanbul",
universite: "Uludağ Üniversitesi"
};
const { ad, ...kalanBilgiler } = kullanici;
console.log(ad); // "Selin"
console.log(kalanBilgiler);
// { yas: 24, sehir: "İstanbul", universite: "Uludağ Üniversitesi" }Burada ad property'sini ayrı aldık, geri kalan tüm property’leri kalanBilgiler adlı yeni bir obje içinde topladık.
Bu, özellikle büyük JSON verileriyle çalışırken çok işe yarar.
Rest Operatörü ile Fonksiyon Parametreleri
Rest operatörünün sıkça kullanıldığı bir diğer alan ise fonksiyon parametreleridir.
Bir fonksiyona kaç tane argüman geleceğini bilmiyorsak, rest operatörüyle hepsini tek bir diziye toplayabiliriz:
function toplam(...sayilar) {
return sayilar.reduce((a, b) => a + b, 0);
}
console.log(toplam(10, 20, 30)); // 60
console.log(toplam(5, 15, 25, 35)); // 80Burada ...sayilar, fonksiyona gelen tüm argümanları bir dizi haline getiriyor.
Bu sayede ister 3 ister 10 parametre gönderelim, fonksiyon sorunsuz çalışıyor.
Rest Operatörünün Özellikleri ve Dikkat Edilmesi Gerekenler
-
Her zaman en sonda olmalıdır:
Destructuring sırasında
...ifadesi yalnızca son sırada kullanılabilir.const [ilk, ...kalan, son] = [1, 2, 3, 4]; // ❌ Hata verir -
Yeni bir kopya oluşturur:
Rest operatörü, dizinin veya objenin orijinal halini değiştirmez; yeni bir kopya oluşturur.
-
Sınırsız sayıda elemanı kapsayabilir:
Rest operatörüyle kaç eleman kalırsa kalsın hepsi tek bir değişkende toplanabilir.
Özetle
Rest operatörü (...), destructuring işlemlerinde geri kalan verileri bir araya toplamak için kullanılır.
Hem dizilerde hem objelerde çok güçlü bir araçtır.
- Dizilerde: Geriye kalan elemanları yeni bir dizi olarak toplar.
- Objelerde: Geriye kalan property’leri yeni bir obje olarak toplar.
- Fonksiyonlarda: Parametre sayısı belirsiz olduğunda tüm argümanları tek bir diziye dönüştürür.
- Orijinal veri değişmez: Rest işlemi, orijinal dizi veya objeyi etkilemez.
Bu özellik, hem pratik hem de modern JavaScript yazımında oldukça yaygındır.
Karmaşık verilerle çalışırken kodunuzu daha sade, okunabilir ve güçlü hale getirir.






