Operator rest dalam JavaScript
Pelajaran ini akan kita mulai dengan beberapa penjelasan.
Semua pelajaran sebelumnya di bagian ini saya tidak
memberitahu Anda seluruh kebenaran tentang operator ...
Sebenarnya, operator ini tergantung pada posisinya dalam kode bisa disebut sebagai operator spread, atau operator rest.
Seperti yang sudah Anda ketahui, ketika operator spread
berada di depan array atau string, ia membaginya
menjadi nilai-nilai individual. Operator rest,
meskipun memiliki sintaks yang sama berupa ...,
tetapi dimaksudkan untuk hal yang berbeda.
Sekarang kita akan membahas untuk apa. Misalkan kita memiliki fungsi yang menerima dua parameter:
function func(a, b) {
console.log(a);
console.log(b);
}
Anda seharusnya sudah tahu, bahwa jika fungsi diberikan parameter berlebih, hal ini tidak akan menyebabkan error:
func(1, 2, 3, 4, 5);
Operator rest memungkinkan kita untuk mendapatkan semua
parameter berlebih dalam bentuk array. Untuk melakukan ini,
sebuah parameter tambahan ditambahkan ke fungsi (wajib
berada di posisi terakhir), di depannya ditulis 3 titik:
function func(a, b, ...rest) {
}
Tiga titik ini adalah operator rest, dan nama
variabelnya bisa disebut apa saja, tetapi
biasanya juga umum menyebutnya rest.
Mari kita panggil fungsi kita dengan jumlah
parameter yang berlebih dan lihat apa yang masuk
ke dalam parameter a dan b, dan apa -
yang masuk ke sisa rest:
func(1, 2, 3, 4, 5);
function func(a, b, ...rest) {
console.log(a); // menampilkan 1
console.log(b); // menampilkan 2
console.log(rest); // menampilkan [3, 4, 5]
}
Jika tidak ada parameter berlebih, maka variabel
rest akan berisi array kosong:
func(1, 2);
function func(a, b, ...rest) {
console.log(a); // menampilkan 1
console.log(b); // menampilkan 2
console.log(rest); // menampilkan []
}
Fungsi bahkan bisa sama sekali tidak memiliki parameter,
tetapi kita dapat menambahkan rest ke dalamnya.
Dalam hal ini, fungsi dapat dipanggil
dengan sejumlah parameter apa pun dan semuanya
akan masuk ke dalam array rest:
function func(...rest) {
console.log(rest);
}