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:

javascriptfunction 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:

javascriptfunc(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:

javascriptfunction 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:

javascriptfunc(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:

javascriptfunc(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:

javascriptfunction func(...rest) {
  console.log(rest);
}