Funksiya ta’riflari
Funksiya ta’riflari va funksiya e’lonlari
Funksiya ta’rifi (function definition) — funksiyani aniqlashni bildiruvchi umumiy atama.
Funksiya e’loni (function declaration) — funksiyani aniqlashning muayyan bir usuli.
Funksiya ta’riflariga quyidagilar misol bo‘ladi:
- Funksiya deklaratsiyasi
- Funksiya ifodalari
- Ok funksiyalari
Misol
// Function Declaration
function myFunction(x, y) {
return x * y;
}
// Function Expression (Named)
const myFunction = function name(x, y) {
return x * y;
};
// Function Expression (Anonymous)
const myFunction = function (x, y) {
return x * y;
};
// Arrow Function
const myFunction = (x, y) => x * y;
// Function Constructor
const myFunction = new Function("x", "y", "return x * y");
// Object Method
const obj = {
myFunction(x, y) {
return x * y;
},
};
Funksiya deklaratsiyasi
Ushbu qo‘llanmaning boshida siz funksiyalar quyidagi sintaksis bilan e’lon qilinishini bilib oldingiz:
function functionName(parameters) {
// code to be executed
}
Funksiya e’loni function kalit so‘zi va funksiya nomidan foydalanadi.
Misollar
Bir qatorli yozuv:
function myFunction(a, b) {return a * b}
O‘zingiz sinab ko‘ring »
Ko‘proq keng tarqalgan:
function myFunction(a, b) {
return a * b;
}
O‘zingiz sinab ko‘ring »
E’lon qilingan funksiyalar darhol bajarilmaydi. Ular "keyinroq foydalanish uchun saqlanadi" va keyinroq, ular chaqirilganda (chaqirilganda) bajariladi.
Funksiyani kodda e’lon qilinishidan oldin yoki keyin chaqirishingiz mumkin.
Misollar
Before:
let x = myFunction(4, 3);
function myFunction(a, b) {
return a * b;
}
O‘zingiz sinab ko‘ring »
After:
function myFunction(a, b) {
return a * b;
}
let x = myFunction(4, 3);
O‘zingiz sinab ko‘ring »
Funksiya ifodalari
Funksiya ifodasi funksiyani o‘zgaruvchi ichida saqlaydi.
Funksiya anonim (nomsiz) bo‘lishi mumkin.
Funksiya ifodalari faqat kod ularga yetib kelganda bajariladi.
Funksiya ifodasi o‘zgaruvchida saqlanganidan so‘ng, o‘zgaruvchidan funksiya sifatida foydalanish mumkin:
Ko‘tarish (Hoisting)
Funksiya deklaratsiyasi o‘z doirasining yuqori qismiga ko‘tariladi.
Funksiya ifodalari bir xil tarzda ko‘tarilmaydi.
Funksiya deklaratsiyasini ular aniqlanmasidan oldin chaqirish mumkin.
Funksiya ifodalarini ular aniqlanmaguncha chaqirib bo‘lmaydi.
Misollar
Funksiya deklaratsiyasini aniqlashdan oldin chaqirish mumkin:
const sum = add(2, 3); // Will work
function add(a, b) {return a + b;}
Funksiya ifodalarini ular aniqlanmaguncha chaqirib bo‘lmaydi:
const sum = add(2, 3); // ⛔ Will generate error
const add = function (a, b) {return a + b;};
Asosiy farqlar
| Function Declaration | Funksiya ifodasi |
|---|---|
| Sintaksis: funksiya kalit so‘zidan boshlanadigan va undan keyin talab qilinadigan ism. | Sintaksis: ifoda yoki topshiriqning bir qismi va anonim bo‘lishi mumkin (ismsiz). |
| Ko‘tarish: Funksiya kodni bajarishdan oldin o‘z doirasining yuqori qismiga ko‘chiriladi, bu sizga ushbu kod doirasidagi istalgan joydan, hatto uning e’lon qilinishidan oldin ham chaqirish imkonini beradi (hoisting). | Yuk ko‘tarish: Funksiyani ushlab turgan o‘zgaruvchi ko‘tarilishi mumkin (var, let yoki const ga bog‘liq), lekin funksiyaning o‘zi emas. Siz uni faqat kod doirasida aniqlangandan keyin chaqirishingiz mumkin. |
| Moslashuvchanlik: asosan global yoki ma’lum bir doirada mavjud bo‘lishi kerak bo‘lgan umumiy maqsadli funksiyalar uchun ishlatiladi. | Moslashuvchanlik: boshqa funksiyalarga argumentlar (Callback-lar), darhol chaqiriladigan funksiya ifodalari va obyekt xususiyatlariga tayinlangan kabi turli kontekstlarda ishlatilishi mumkin. |
O‘zgaruvchilarda saqlangan funksiyalar
O‘zgaruvchida saqlangan funksiya har qanday boshqa qiymat kabi ishlatilishi mumkin:
JavaScript funksiyalaridan ifodalarda foydalanish mumkin:
Misol
function myFunction(a, b) {
return a * b;
}
let x = myFunction(4, 3) * 2;
O‘zingiz sinab ko‘ring »
Function() konstruktori
Funksiyalarni JavaScript’ning Function() konstruktori yordamida ham aniqlash mumkin, lekin bu kamdan-kam qo‘llaniladi.
Misol
const myFunction = new Function("a", "b", "return a * b");
let x = myFunction(4, 3);
O‘zingiz sinab ko‘ring »
Siz aslida funksiya konstruktoridan foydalanishingiz shart emas. Yuqoridagi misol yozish bilan bir xil:
Misol
const myFunction = function (a, b) {return a * b};
let x = myFunction(4, 3);
O‘zingiz sinab ko‘ring »
Funksiyalar — obyektlar
JavaScript-dagi typeof operatori funksiyasini qaytaradi
funksiyalari.
Biroq JavaScript funksiyalarini eng to‘g‘ri tarzda obyektlar deb ta’riflash mumkin.
JavaScript funksiyalarining ham xususiyatlari, ham metodlari bor.
arguments.length xususiyati qabul qilingan argumentlar sonini qaytaradi
funksiyasi bo‘yicha:
Misol
function multiply(a, b) {
return arguments.length;
}
// Returns 0
multiply();
// Returns 2
multiply(a, b);
O‘zingiz sinab ko‘ring »
toString() usuli funksiyani string sifatida qaytaradi:
Misol
function multiply(a, b) {
return a * b;
}
let text = multiply.toString();
O‘zingiz sinab ko‘ring »
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
