JavaScript funksional dasturlash asoslari
Massiv metodlari va arrow funksiyalar — funksional uslubning bir qismi. Bu darsda uning tamoyillari va nima uchun kodni ishonchli qilishini ko’ramiz.
Sof funksiya
Nosof funksiya bir xil argument bilan turli natija berdi — chunki u
tashqi jami ga bog’liq.
Sof funksiyaning foydasi: sinash oson (faqat kirish va chiqish), natijasini keshlash mumkin, va tartibini o’zgartirish xavfsiz.
O’zgartirmaslik (immutability)
| O’zgartiradi | O’zgartirmaydi |
|---|---|
push, pop, shift, unshift |
[...massiv, yangi] |
splice |
slice, filter |
sort, reverse |
[...massiv].sort(), toSorted() |
Obyektlar uchun ham xuddi shunday:
Yuqori tartibli funksiyalar
Kompozitsiya
Kichik funksiyalarni ulab, kattasini yasash:
ulash funksiyasi reduce ustiga qurilgan: har amal oldingisining
natijasini oladi. Natija — o’qiladigan, qayta ishlatiladigan zanjir.
Currying
Amaliy misol
Har qadam nomlangan va alohida sinaladi. Zanjir yuqoridan pastga o’qiladi va asl massivga tegmaydi.
Memoizatsiya
Sof funksiya natijasini keshlash xavfsiz — kirish bir xil bo’lsa, natija ham bir xil:
Map va closure birga — ikkinchi chaqiruvda hisob qaytarilmadi.
Qachon ishlatmaslik
Amaliy mashq
- Nosof funksiyani sof qilib qayta yozing;
- massivni
pusho’rniga spread bilan kengaytiring; - obyekt xossasini o’zgartirmasdan yangi nusxa yasang;
- funksiya qaytaradigan funksiya yozing;
ulashbilan uch amalni zanjirlang;keshlayordamchisini yozib, ikki marta chaqiring.
Qisqacha xulosa
- Sof funksiya: bir xil kirish → bir xil chiqish, yon ta’sirsiz.
- O’zgartirmaslik: asl ma’lumotga tegmay, yangi nusxa qaytarish.
push/sorto’zgartiradi —[...massiv]bilan nusxa oling.- Yuqori tartibli funksiya funksiyani oladi yoki qaytaradi.
- Kompozitsiya kichik funksiyalarni zanjirga ulaydi.
- Sof funksiya natijasini keshlash xavfsiz (memoizatsiya).
Keyingi darsda Proxy va Reflect — obyekt xatti-harakatini boshqarish.