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

JavaScript

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)

JavaScript
O’zgartiradi O’zgartirmaydi
push, pop, shift, unshift [...massiv, yangi]
splice slice, filter
sort, reverse [...massiv].sort(), toSorted()

Obyektlar uchun ham xuddi shunday:

JavaScript

Yuqori tartibli funksiyalar

JavaScript

Kompozitsiya

Kichik funksiyalarni ulab, kattasini yasash:

JavaScript

ulash funksiyasi reduce ustiga qurilgan: har amal oldingisining natijasini oladi. Natija — o’qiladigan, qayta ishlatiladigan zanjir.

Currying

JavaScript

Amaliy misol

JavaScript

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:

JavaScript

Map va closure birga — ikkinchi chaqiruvda hisob qaytarilmadi.

Qachon ishlatmaslik

Amaliy mashq

  1. Nosof funksiyani sof qilib qayta yozing;
  2. massivni push o’rniga spread bilan kengaytiring;
  3. obyekt xossasini o’zgartirmasdan yangi nusxa yasang;
  4. funksiya qaytaradigan funksiya yozing;
  5. ulash bilan uch amalni zanjirlang;
  6. keshla yordamchisini 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/sort o’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.

Bu dars foydali bo'ldimi?

marta ko'rildi