Rest parametrlar va spread sintaksisi
JavaScript da ko'plab ichki funksiyalar istalgancha argument qabul qilishi mumkin.
Masalan:
Math.max(arg1, arg2, ..., argN)
– argumentlarning eng kattasini qaytaradi.Object.assign(dest, src1, ..., srcN)
–src1..N
nidest
ga nusxa ko'chiradi.
Ushbu bobda biz xuddi shunday qanday qilishni o'rganamiz. Shuningdek, qanday qilib massivlarni bunday funksiyalarga parametr sifatida o'tkazishni ham ko'rib chiqamiz.
Rest parametrlar
Funksiya har qancha argument bilan chaqirilishi mumkin, bu uning qanday aniqlanganiga bog'liq emas.
Masalan:
Bu yerda ortiqcha argumentlar sababli xato bo'lmaydi. Ammo, natijada faqat birinchi ikkita qiymat hisobga olinadi va kodda natija 3 bo'ladi.
Rest parametrlar funksiyaning aniqlanishida uchta nuqta (...
) orqali qo'shilishi mumkin. Bu nuqtalar Rest parametrlarni massivga yig'ish uchun ishlatiladi.
Masalan, barcha argumentlarni args
massiviga yig'ish uchun:
Biz birinchi parametrlarni o'zgaruvchilar sifatida olishimiz va faqat Restlarini yig'ishimiz mumkin.
Bu yerda birinchi ikkita argument o'zgaruvchilar sifatida olinadi va Restlari titles
massiviga yig'iladi:
Rest parametrlar oxirida bo'lishi kerak
Rest parametrlar barcha Rest argumentlarni yig'adi, shuning uchun quyidagi holat noto'g'ri bo'ladi va xato yuzaga keladi:
Rest parametrlar har doim oxirgi bo'lishi kerak.
"arguments" o'zgaruvchisi
Shuningdek, arguments
nomli maxsus massivga o'xshash obyekt mavjud bo'lib, u barcha argumentlarni indekslari bo'yicha o'z ichiga oladi.
Masalan:
Ilgari Rest parametrlar tilga kiritilmagan edi va funksiyadagi barcha argumentlarni olishning yagona usuli arguments
edi. U hali ham ishlaydi, lekin kamchilik shundaki, arguments
massivga o'xshash bo'lsa ham, u massiv emas.
Arrow funksiyalar va "arguments"
Arrow funksiyalar o'zlarining arguments
obyektiga ega emas. Agar biz arguments
obyektiga murojaat qilsak, u tashqi funksiyadan olinadi.
Masalan:
spread (spread) sintaksisi
Ba'zida massivni argumentlar ro'yxatiga aylantirishimiz kerak bo'ladi.
Masalan, Math.max
funksiyasi eng katta sonni qaytaradi:
Ammo agar bizda massiv bo'lsa, uni qanday qilib Math.max
ga yuborish mumkin?
spread sintaksisi yordamga keladi! U xuddi Rest parametrlarga o'xshaydi, ammo aksi bo'ladi. spread sintaksisi massivni argumentlar ro'yxatiga kengaytiradi.
Masalan:
Massivlar va obyektlarni nusxalash
Object.assign
haqida gapirganimizda, biz spread sintaksisini ham ishlatishimiz mumkinligini bilamiz.
spread sintaksisi orqali obyektlarni ham nusxalash mumkin:
Xulosa
Kodda ...
ko'rganimizda, bu yoki Rest parametrlar, yoki spread sintaksisi bo'lishi mumkin.
- Funksiya parametrlarida
...
Rest parametrlar bo'lib, argumentlarni massivga yig'adi. - Funksiya chaqirilganida esa bu spread sintaksisi bo'lib, massivni argumentlar ro'yxatiga aylantiradi.