Pengendali rest dalam JavaScript
Pelajaran ini akan kita mulakan dengan sedikit penjelasan.
Semua pelajaran sebelumnya dalam bahagian ini saya tidak
memberitahu anda keseluruhan kebenaran tentang pengendali ...
Sebenarnya, pengendali ini bergantung pada kedudukannya dalam kod, boleh dipanggil sama ada sebagai pengendali spread, ataupun pengendali rest.
Seperti yang anda sudah ketahui, apabila pengendali spread
berdiri di hadapan array atau string, ia membahagikan
mereka kepada nilai-nilai individu. Pengendali rest,
walaupun mempunyai sintaks yang sama dalam bentuk ...,
tetapi bertujuan untuk kegunaan lain.
Sekarang kita akan fahami, untuk apa. Katakan kita ada fungsi, yang menerima dua parameter:
function func(a, b) {
console.log(a);
console.log(b);
}
Anda sepatutnya sudah tahu, bahawa jika fungsi dipanggil dengan parameter berlebihan, ini tidak akan menyebabkan ralat:
func(1, 2, 3, 4, 5);
Pengendali rest membolehkan kita mendapatkan semua
parameter berlebihan dalam bentuk array. Untuk ini,
satu parameter tambahan ditambah ke dalam fungsi (wajib
menjadi yang terakhir), di hadapannya ditulis 3 titik:
function func(a, b, ...rest) {
}
Tiga titik ini它就是 pengendali rest, dan nama
pembolehubah boleh mempunyai sebarang panggilan, tetapi
biasanya ia juga dipanggil rest.
Mari kita panggil fungsi kita dengan kuantiti
parameter yang berlebihan dan lihat, apa yang masuk
ke dalam parameter a dan b, dan apa -
ke dalam baki rest:
func(1, 2, 3, 4, 5);
function func(a, b, ...rest) {
console.log(a); // akan memaparkan 1
console.log(b); // akan memaparkan 2
console.log(rest); // akan memaparkan [3, 4, 5]
}
Jika tiada parameter berlebihan, maka ke dalam pembolehubah
rest akan ditulis array kosong:
func(1, 2);
function func(a, b, ...rest) {
console.log(a); // akan memaparkan 1
console.log(b); // akan memaparkan 2
console.log(rest); // akan memaparkan []
}
Dalam fungsi secara amnya mungkin tiada parameter,
tetapi pada masa yang sama kita boleh menambah rest ke dalamnya.
Dalam kes ini, fungsi boleh dipanggil
dengan sebarang kuantiti parameter dan kesemuanya
akan masuk ke dalam array rest:
function func(...rest) {
console.log(rest);
}