JavaScript'da funksiyalar: Function Declaration vs Expression, Arrow functions, parametrlar va argumentlar, return, default va rest parametrlari hamda amaliy mashq va testlar.
Function — kodning qayta ishlatiladigan bo'lagi. Bu bob JavaScript'dagi eng muhim tushunchalardan biriga bag'ishlangan.
Function — ma'lum bir vazifani bajaradigan, nomga ega kod bloki.
Agar bir xil kodni bir necha marta yozish o'rniga, uni bitta functionga joylab, kerak bo'lganda chaqirsa bo'ladi.
☕️ Function — bu qahva mashinasi: har safar tugmani bossangiz (chaqirsangiz), bir xil jarayon (dastur) ishga tushadi va natija (qahva) chiqadi.
script.jsJavaScriptfunction greet() {console.log("Salom!");}greet(); // "Salom!"greet(); // "Salom!"
greet function bir marta yozilgan, lekin uni istalgancha marta chaqirish mumkin.
script.jsJavaScriptfunction greetUser(name) { // name — parameterconsole.log("Salom, " + name);}greetUser("Ali"); // "Ali" — argument
| Tushuncha | Ta'rif | Misol |
|---|---|---|
| Parameter | Function e'lonidagi o'zgaruvchi | name |
| Argument | Chaqirishda berilgan qiymat | "Ali" |
return — function natijasini qaytaradi va function ishlashini to'xtatadi.
script.jsJavaScriptfunction sum(a, b) {return a + b;}let result = sum(5, 3);console.log(result); // 8
⚠️ Common Mistake
return yozmaslik — function undefined qaytaradi.
❌ Yomon:
script.jsJavaScriptfunction sum(a, b) {a + b; // return yo'q}console.log(sum(5, 3)); // undefined
Function yaratishning ikki asosiy usuli bor.
script.jsJavaScript// Function Declarationfunction add(a, b) {return a + b;}// Function Expressionconst multiply = function (a, b) {return a * b;};
| Feature | Declaration | Expression |
|---|---|---|
| Hoisting | ✅ (chaqirishdan oldin ishlatsa bo'ladi) | ❌ |
| Nomi | Majburiy | Ixtiyoriy (anonymous bo'lishi mumkin) |
💡 Key Idea
Function Declaration hoisting tufayli fayl boshida e'lon qilinmagan bo'lsa ham chaqirilishi mumkin, lekin Function Expression bunday emas.
ES6'da qo'shilgan, functionni qisqaroq yozish usuli.
script.jsJavaScript// Oddiy functionfunction square(x) {return x * x;}// Arrow functionconst squareArrow = (x) => {return x * x;};// Yanada qisqa (implicit return)const squareShort = x => x * x;
(x) => — parameter va arrow belgisi.{} va return shart emas.🔥 Important
Arrow function'lar o'zining this qiymatiga ega emas — u tashqi (lexical) thisdan meros oladi. Bu haqda Chapter 13'da batafsil to'xtalamiz.
Agar argument berilmasa, parameter standart qiymatga ega bo'lishi mumkin.
script.jsJavaScriptfunction greet(name = "Mehmon") {console.log("Salom, " + name);}greet(); // "Salom, Mehmon"greet("Ali"); // "Salom, Ali"
Noma'lum sondagi argumentlarni bitta array sifatida qabul qilish uchun ishlatiladi.
script.jsJavaScriptfunction sumAll(...numbers) {return numbers.reduce((total, n) => total + n, 0);}console.log(sumAll(1, 2, 3, 4)); // 10
...numbers — barcha berilgan argumentlarni numbers nomli array ichiga yig'adi.
🔗 Connection
Rest parameters — Chapter 16'da o'rganiladigan Spread/Rest operatorining bir qo'llanilishi.
Task:
Ikki sonni qabul qilib, ularning yig'indisini qaytaradigan sum nomli function yozing.
Required Concepts:
return ishlating.Task:
Sonni qabul qilib, u juft yoki toqligini "juft" yoki "toq" satri sifatida qaytaradigan arrow function yozing.
Required Concepts:
num % 2 === 0 ? "juft" : "toq" dan foydalaning.Task:
Cheksiz sondagi sonlarni qabul qilib, ularning eng kattasini qaytaradigan findMax functionni rest parameters yordamida yozing.
Required Concepts:
Math.max(...numbers) ishlatishingiz mumkin.script.jsJavaScriptfunction test() {return;console.log("Bu chiqadimi?");}console.log(test());
🧠 Think first! Javobni ko'rishdan oldin kamida 30 soniya o'ylang.
<details> <summary>Answer</summary> undefinedWhy?
return yozilgandan keyin function ishlashini to'xtatadi, shuning uchun undan keyingi qatorlar hech qachon bajarilmaydi. returndan keyin qiymat yozilmagani uchun undefined qaytadi.
Quyidagi kodda muammo bor:
script.jsJavaScriptsayHello();const sayHello = function () {console.log("Salom!");};
Your Task:
Yechim: Function Declaration ishlatish yoki chaqirishni e'londan keyin joylashtirish kerak:
</details>script.jsJavaScriptconst sayHello = function () {console.log("Salom!");};sayHello();
return natijani qaytaradi va functionni to'xtatadi.thisiga ega emas.this xatti-harakati boshqacha.returnsiz function har doim undefined qaytaradi.script.jsJavaScriptfunction name(param1, param2) {return param1 + param2;}const arrow = (param) => param * 2;function withDefault(x = 10) {return x;}function withRest(...args) {return args;}
Mavzu bo‘yicha tushunchalaringizni interaktiv test orqali sinovdan o‘tkazing va natijalarni bilib oling.
Darslikda o‘rganilgan qoidalarga asosan real kod yozing, testlardan o‘tkazing va yechimlarni mustahkamlang.
Test Sinovi
Hali topshirilmagan (kamida 75% kerak)
Amaliy Masalalar
0 / 3 ta yechildi (kamida 75% kerak)
Dars sifati va mazmunini yaxshilash uchun o‘z haqqoniy bahoingizni qoldiring.
Mavzuni to‘liq o‘zlashtirish uchun test sinovi, amaliy kodlash va bog‘liq darslar
O‘z bilimingizni interaktiv test savollari orqali tekshiring va darhol xatolarni tahlil qiling.
Nazariyani real kod yozish bilan mustahkamlang, avtomatik testlardan o‘ting va XP to‘plang.
Kurs bo‘yicha keyingi va bog‘liq mavzular: