JavaScriptda "First class function" tushunchasi
Josh*Assalaamu alaykum.
Ushbu maqolamning mavzusi tepada o'qiganingizdek first class functions.

Bilamiz, JavaScriptda function orqali ko'p ishlar qila olamiz. Misol uchun ushbu oddiy funksiyaga qarang:
function sayHello(){
console.log("Hello")
}
sayHello() // Hello
Ushbu barchamiz bilgan funksiya.
Endi , mavzuga qaytamiz,
JavaScriptda funksiyalar faqatgina ushbu ko'rinishdagina ishlatilmaydi, balki biz funksiyalarni boshqa bir funksiyaga argument sifatida berishimiz, yoki qaysidir o'zgaruvchiga qiymat sifatida berishimiz va xatto qandaydir blok ichidan funksiyani return qilishimiz ham mumkin.
Mana shu kabi funksiyalarga "First class functions" deyiladi.
Endi misollar orqali tushuntiraman.
function sayHello(){
return "Hello ";
}
function greet(helloFunc, name){
alert(helloFunc() + name);
}
greet(sayHello, "Josh");
Ushbu kodimizga e'tibor beramiz, sayHello funksiyasi "Hello" degan so'zni return qilib beryapti, greet funksiyasi esa 2 ta argument qabul qilyapti, biri funksiya qabul qiladi, biri esa name va kod ichida argumentlarni birinchisini funksiya sifatida chaqiryapti, birisini esa string ko'rinishida.
Oxirida esa greet funksiyasining birinchi argumentiga boshqa bir funksiyani berib yuboryapmiz. Aynan shu yerda "first class function" tushunchasi ishlaydi.
P.S: Funksiyalarni chaqirish uchun ishlatiladigan () ushbu ikki qavslarni to'g'ri ishlatish talab etiladi, chunki bu ikkisi orqali biz funksiyani ishlatib yuboramiz, garchi buni xoxlamasak ham. Misol uchun quyidagi qatorda yozgan kodimiz xatolik beradi va xato ishlaydi:
greet(sayHello(), "Josh");
Shuningdek funksiyalarni qandaydir o'zgaruvchilarga ham berib yuborishimiz mumkin. Bunday:
const fn = sayHello;
fn(); // "Hello" qaytaradi
va yana funksiyalarni boshqa bir funksiya ichidan "return" qilishimiz ham mumkin.
Misol uchun:
function sayHello() {
return function() {
console.log("Hello");
}
}
const func = sayHello() // ikki qavs orqali sayHello ni chaqirib oldik, bu orqali uni ichidagi qaytgan funksiya func ga qiymat sifatida beriladi.
func() // Hello
Mana ushbu kod orqali bir funksiya ichida ikkinchi funksiyani return qildik.
Bu yerda eng e'tiborli qismi bu qavslarni ishlatishda, biz agar funksiyani boshqa bir o'zgaruvchiga bermaganimizda funksiyani chaqirish kodimiz mana bunday bo'lar edi:
sayHello()();
Bu yerda birinchi qavs birinchi asosiy funksiyani chaqirish uchun , ikkinchisi esa return bo'lib qaytgan funksiya uchun.
Mana "first class functions" nima ekanligini ham bilib oldik.
Savol va takliflar bo'lsa bemalol ushbu maqolamiz kommentiga yozing.
E'tiboringiz uchun rahmat!
Kanalimiz: @JoshDeveloper