# JavaScript funksiyalar (function, parametr, return)

> JavaScript funksiyalari: e'lon qilish, parametr uzatish, return bilan qiymat qaytarish va standart qiymatlar. Kodni qayta ishlatiladigan qilishni o'rganing.

Manba: https://learncode.uz/javascript/funksiyalar/
Sana: 2026-05-27

Bir xil kodni bir necha joyda takrorlash o'rniga uni nom bilan o'rab qo'yish
mumkin. **Funksiya** — bajariladigan ishning nomlangan bo'lagi.

## Funksiya yaratish va chaqirish

```js
function greet() {
  console.log("Assalomu alaykum!");
}

greet();
greet();
```

E'lon qilish kodni **bajarmaydi** — u faqat "shunday funksiya bor" deb
qayd qiladi. Bajarish uchun nomini qavs bilan yozib **chaqirish** kerak.

## Parametr — funksiyaga ma'lumot berish

```js
function greet(name) {
  console.log(`Salom, ${name}!`);
}

greet("Aziz");
greet("Dilnoza");
```

`name` — **parametr**, funksiya ichidagi o'zgaruvchi. Chaqirishda berilgan
`"Aziz"` esa **argument**.

Bir nechta parametr vergul bilan ajratiladi:

```js
function calculate(price, qty) {
  console.log(price * qty);
}

calculate(15000, 3);
```

## return — qiymat qaytarish

`console.log` faqat ko'rsatadi. Natijani keyin ishlatish uchun `return` kerak:

```js
function calculate(price, qty) {
  return price * qty;
}

const total = calculate(15000, 3);
console.log(total);
console.log(total + 5000);
```

Endi natija o'zgaruvchida saqlandi va ustiga amal bajarildi.

> **print va return farqi**
>
> `console.log` — natijani **ko'rsatadi**, lekin qiymat qaytarmaydi. `return`
> esa qiymatni funksiyadan **chiqarib beradi**, uni saqlash va ishlatish mumkin.
> Boshlovchilar ko'p adashadigan joy shu.

`return` bajarilishi bilan funksiya **to'xtaydi**:

```js
function validate(age) {
  if (age < 18) {
    return "Yosh yetarli emas";
  }
  return "Kirish mumkin";
}

console.log(validate(15));
console.log(validate(25));
```

## Standart qiymat

Argument berilmasa ishlatiladigan qiymat:

```js
function greet(name = "mehmon") {
  return `Salom, ${name}!`;
}

console.log(greet("Aziz"));
console.log(greet());
```

## Arrow funksiya

Zamonaviy JavaScript'da qisqa yozuv keng ishlatiladi:

```js
const add = (a, b) => {
  return a + b;
};

const multiply = (a, b) => a * b;

console.log(add(2, 3));
console.log(multiply(2, 3));
```

Tanasi bitta ifodadan iborat bo'lsa, `{}` va `return` tushib qoladi —
natija o'z-o'zidan qaytariladi.

> **Qaysi birini ishlatish**
>
> Ikkalasi ham to'g'ri. `function` — an'anaviy va aniq ko'rinadi; **arrow**
> qisqa va massiv metodlarida qulay ([keyingi darslarda](https://learncode.uz/javascript/massiv-metodlari)
> ko'rasiz). Boshida `function` bilan boshlang, arrow'ni sekin o'zlashtiring.

## Funksiyalarni birlashtirish

Bir funksiya ikkinchisini chaqirishi mumkin — katta masala kichik bo'laklarga
bo'linadi:

```js
function tax(amount) {
  return amount * 0.12;
}

function finalPrice(price, qty) {
  const total = price * qty;
  return total + tax(total);
}

console.log(finalPrice(15000, 3));
```

## Amaliy mashq

Kalkulyator funksiyalarini yozing:

1. `square(num)` funksiyasini `return` bilan yozing;
2. natijani o'zgaruvchiga saqlab, ustiga 10 qo'shing;
3. `ortacha(a, b, c)` — uchta sonning o'rtachasini qaytarsin;
4. `greet(name)` ga standart qiymat qo'shing va argumentsiz chaqiring;
5. bittasini arrow funksiya ko'rinishida qayta yozing.

2-qadamda `return` o'rniga `console.log` yozsangiz nima bo'ladi? Sinab ko'ring.

## Qisqacha xulosa

- **Funksiya** — nomlangan, qayta ishlatiladigan kod bo'lagi.
- E'lon qilish kodni bajarmaydi; **chaqirish** kerak: `greet()`.
- **Parametr** — funksiya ichidagi o'zgaruvchi, **argument** — berilgan qiymat.
- `return` qiymat qaytaradi va funksiyani to'xtatadi.
- **Arrow funksiya** `(a, b) => a + b` — qisqa zamonaviy shakl.

Keyingi darsda [massivlar](https://learncode.uz/javascript/massivlar) — bir nechta qiymatni bitta
o'zgaruvchida saqlashni ko'ramiz.
