Bosh sahifa Wiki Function

Function

Function — nomlangan yoki anonim kod birligi bo‘lib, kirish qiymatlarini qabul qiladi, amallarni bajaradi va natija qaytarishi mumkin. Funksiya murakkab dasturni kichik mas’uliyatlarga ajratadi, takroriy mantiqni bir joyda saqlaydi va testlanadigan interfeys hosil qiladi. Matematik funksiyadan farqli ravishda dasturiy funksiya tashqi holatni o‘zgartirishi yoki I/O bajarishi ham mumkin.

Parametr va argument

Parametr funksiya e’lonidagi o‘zgaruvchi, argument esa chaqirishda berilgan haqiqiy qiymatdir. Default parametr argument berilmaganda ishlaydi. Variadic parametr o‘zgaruvchan sonli argument qabul qiladi.

function total(values, taxRate = 0) {
  const sum = values.reduce((a, b) => a + b, 0);
  return sum * (1 + taxRate);
}

Funksiya contracti qabul qilinadigan type, diapazon, qaytish qiymati va xato holatini belgilaydi. Noto‘g‘ri argument jim noto‘g‘ri natija bermasligi uchun kerakli chegarada validation qilinadi.

Scope va closure

Local o‘zgaruvchi funksiya scopeida yashaydi. Closure ichki funksiya tashqi scope qiymatiga murojaat qilganda, tashqi chaqiruv tugagach ham kerakli muhitni saqlashi mumkin. Bu callback va factorylarda foydali.

Closure katta obyekt yoki DOM nodega keraksiz havolani ushlab qolsa xotira sarfi davom etadi. Qaysi qiymat capture qilinayotgani lifecycle bilan birga ko‘riladi.

Pure function va side effect

Pure function bir xil argumentlar uchun bir xil natija qaytaradi va tashqi holatni o‘zgartirmaydi. Uni testlash, cache qilish va parallel bajarish osonroq. Vaqt o‘qish, databasega yozish, log chiqarish yoki global o‘zgaruvchini yangilash side effect hisoblanadi.

Barcha funksiya pure bo‘la olmaydi, chunki dastur tashqi dunyo bilan ishlaydi. Arxitektura hisoblash mantiqini pure qismga, I/Oni aniq chegara qismiga ajratishi mumkin.

Call stack va recursion

Funksiya chaqirilganda return manzili, parametr va local holat call stack frame’da saqlanishi mumkin. Funksiya boshqasini chaqirsa yangi frame qo‘shiladi. Juda chuqur recursion stack overflowga olib keladi. Iteration yoki explicit stack ayrim algoritmlarda xavfsizroq.

Tail call natijasi bevosita ichki funksiya chaqiruvi bo‘lsa, ayrim tillar stack frame’ni qayta ishlatishi mumkin. Bu optimizatsiya barcha runtime’da kafolatlanmaydi.

Higher-order function

Funksiyani argument sifatida qabul qiladigan yoki funksiya qaytaradigan funksiya higher-order functiondir. map, filter va reduce callbacklar bilan kolleksiyani qayta ishlaydi. Callback sync yoki async bo‘lishi mumkin; API uning natijani kutish-kutmasligini aniq belgilaydi.

Error va async natija

Funksiya xatoni exception, result type, error code yoki rejected Promise orqali bildirishi mumkin. Errorni yutib yuborish callerga muvaffaqiyat ko‘rinishini beradi. Cleanup finally, context manager yoki defer mexanizmi bilan muvaffaqiyat va xato yo‘lida bajariladi.

Async function darhol Promise yoki future qaytaradi. Uning ichki natijasini olish uchun await yoki callback kerak. Async deb belgilash CPUga og‘ir hisobni avtomatik parallel qilmaydi.

Function signature va overload

Signature funksiya nomi, parametr turlari, tartibi va qaytish turini ifodalaydi. Overload bir nom uchun turli argument shakllarini e’lon qiladi. Implementatsiya barcha overload variantlarini xavfsiz ajratishi kerak. Juda ko‘p boolean parametr chaqiruvni tushunarsiz qiladi: create(true, false, true) o‘rniga options object nomlangan ma’noni beradi. Public function signature API shartnomasi bo‘lgani uchun parametrni olib tashlash yoki ma’nosini o‘zgartirish consumerlarni buzishi mumkin. Yangi optional parametr orqaga mos bo‘lishi ehtimoli yuqori, ammo default xatti-harakat oldingi natijani saqlashi kerak.

Bog‘liq tushunchalar

parameter, return value, scope, closure, pure function, recursion, higher-order function