#3 Rest Parametre Kullanımı

Bir önceki yazımızda Spread Operator kavramını incelemiş ve spread operatörü ile bir argüman topluluğunu “…” kullanımı ile tek seferde fonksiyonlarına aktarabiliyor veya farklı alanlarda bu değişkenleri kullanabiliyorduk. Rest parametrelerinin kullanımı spread operatoru ile aynıdır fakat bu kafanızı karıştırmasın, işlevi tam tersi diyebiliriz. Rest parametreleri bizden aldığı argümanları bir dizi gibi toplayarak üzerinde değişik işlemler yapmamıza olanak sağlar. Rest parametreleri sayesinde fonksiyonlara sınırsız eleman gönderebiliriz. Daha iyi anlamak ve önemini kavramak açısından bir örnekle devam edelim.

Gönderdiğimiz değişkenlerin toplamını geri döndüren bir fonksiyonu öncelikle ES6 öncesi standartlarla yazalım:

1
2
3
4
5
6
7
function topla(sayi1,sayi2,sayi3){
return sayi1+sayi2+sayi3;
}
let toplam = topla(2,3,4);
console.log(toplam);
//Console: 9
// topla(2,3,4,5) gönderseydik?

Burada değişken sayıda parametre yolladığımızda ilk 3 değeri parametre olarak alacak, ve ekstra gönderdiğimiz diğer değerleri işleme alamayacaktır. Bunun için gönderdiğimiz parametre sayısı kadar fonksiyonumuzda da o parametreleri karşılamamız gerekir. İşte tam da bu durumda ES6’ın bize sunduğu rest parametresi işimizi çok kolay ve pratik hale getiriyor. Kaç adet parametre yollarsak yollayalım rest parametresi ile karşılayıp, üzerinde gerekli işlemleri yapabiliriz.

1
2
3
4
5
6
7
8
9
10
11
12
13
function topla(...rest){ // ...rest parametresi ile istediğimiz kadar parametre alabiliriz.
let toplam = 0;
for(let i of rest){
toplam+=i;
}
return toplam;
}
console.log(topla(1,2));
console.log(topla(1,2,3));
console.log(topla(1,2,3,4,5));
// Console: 3
// 6
// 15

NOT:
1) Bir fonksiyon için sadece bir adet rest parametresi kullanılabilir.
2) Rest parametresi başka parametrelerle beraber kullanılacaksa fonksiyonun son parametresi olmalıdır.

1
2
3
4
5
6
7
const kareAl = (num1,num2, ...list) => // İlk iki değer (16 ve 21) num1 ve num2'ye atanır. Geri kalan bütün değerler ise list rest parametresine.
{
list.push(num1,num2);
list.forEach(sayi => {console.log(sayi*sayi)})
};
kareAl(16,21,3,9,11,22,14);
//Console: 9 81 121 484 196 256 441

Şimdi ise spread operatoru ve rest parametresi kullanarak dogum yıllarının bulunduğu bir obje dizisini, oluşturduğumuz yasHesapla adlı fonksiyona gönderelim ve sonuçları konsolda yazdıralım.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const yasHesapla = (...list) =>
{
list.forEach(kisi =>
{ console.log(kisi.name, 2020 - kisi.year)})
};

const list1 = [{name:"Ali", year:1996}, {name:"Ebrar",year:1975},{name:"Efe", year:1991}];
const list2 = [{name:"Bilal", year:1998}, {name:"Gülcin",year:1990},{name:"Elif", year:2001},{name:"Burak",year:2005},{name:"Gozde", year:1987}];

yasHesapla(...list1); // 3 elamanlı bir dizi yolladık.
yasHesapla(...list2); // Aynı fonksiyona bu sefer 5 elemanlı bir fonksiyon yolladık.
// Console: Ali 24
// Ebrar 45
// Efe 29
// Bilal 22
// Gülcin 30
// Elif 19
// Burak 15
// Gozde 33

Daha fazlası için: - Rest parameters - JavaScript | MDN

#5 ES6 Map Kullanımı #1 Arrow Function Kavramı

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×