Funksiyalar — declaration va expression
Funksiya yaratishning turli usullari: declaration, expression, arrow. Parametr, argument, return va scope.
Funksiyalar — kodni qayta ishlatish
Bir marta yozing, ming marta chaqiring. Funksiyalar — dasturlashning asosiy poydevori.
Dars rejasi
6 ta mavzu1. Nega funksiya kerak?
Bir xil kodni qayta-qayta yozmaslik uchun. Bir marta funksiya yozib, istalgan joyda chaqirasiz.
1console.log("Salom, Ali!");2console.log("Salom, Vali!");3console.log("Salom, Hasan!");1function salomBer(ism) {2 console.log("Salom, " + ism + "!");3}4
5salomBer("Ali");6salomBer("Vali");7salomBer("Hasan");2. Function Declaration
Eng klassik usul — function kalit so'zi bilan yaratish. «Ko'tarilish» (hoisting) xususiyati bor — e'lon qilishdan oldin ham chaqirish mumkin.
1// E'lon qilishdan OLDIN chaqirsa ham ishlaydi!2qoshish(5, 3); // 83
4function qoshish(a, b) {5 return a + b;6}7
8console.log(qoshish(10, 20)); // 303. Function Expression
Funksiya o'zgaruvchiga qiymat sifatida beriladi. E'lon qilishdan oldin chaqirib bo'lmaydi.
1// Bu oldin chaqirib bo'lmaydi!2// qoshish(5, 3); // XATO: Cannot access before initialization3
4const qoshish = function(a, b) {5 return a + b;6};7
8console.log(qoshish(5, 3)); // 89
10// Nomli expression (kam ishlatiladi)11const ayirish = function ayir(a, b) {12 return a - b;13};4. Arrow funksiyalar
ES6 da kelgan qisqa yozuv. Zamonaviy kodda eng ko'p ishlatiladi — ayniqsa map/filter bilan.
1// Oddiy2const qoshish = (a, b) => {3 return a + b;4};5
6// Bitta ifoda — return avtomatik7const qoshish2 = (a, b) => a + b;8
9// Bitta parametr — qavssiz10const ikki = x => x * 2;11
12// Parametrsiz — qavs majburiy13const salom = () => "Salom!";14
15// Obyekt qaytarish — qavs ichida16const user = () => ({ ism: "Ali", yosh: 17 });17
18// map/filter bilan kombinatsiya19const sonlar = [1, 2, 3, 4, 5];20const juftlar = sonlar.filter(x => x % 2 === 0);21const ikkibar = sonlar.map(x => x * 2);Declaration
function nom(). Hoisting bor. Obyekt metodlari, rekursiya uchun qulay.
Expression
const nom = function(). Hoisting yo'q. Shartli yaratish mumkin.
Arrow
const nom = () =>. Qisqa. Callback'lar uchun eng yaxshisi.
5. Parametrlar va return
1// Bir nechta parametr2function toliqIsm(ism, familiya) {3 return ism + " " + familiya;4}5toliqIsm("Ali", "Valiyev") // "Ali Valiyev"6
7// Default qiymat8function salom(ism = "mehmon") {9 return "Salom, " + ism + "!";10}11salom() // "Salom, mehmon!"12salom("Ali") // "Salom, Ali!"13
14// Rest parametr — noma'lum sondagi argument15function yigindi(...sonlar) {16 return sonlar.reduce((a, b) => a + b, 0);17}18yigindi(1, 2, 3) // 619yigindi(1, 2, 3, 4, 5, 6) // 2120
21// return — funksiyani tugatadi22function absolyut(x) {23 if (x < 0) return -x;24 return x;25}6. Scope — qo'llanish doirasi
1// Funksiya ichidagi o'zgaruvchilar tashqariga chiqmaydi2function hisoble() {3 const ichki = 100;4 console.log(ichki); // 1005}6
7hisoble();8// console.log(ichki); // XATO: ichki is not defined9
10// Global o'zgaruvchini ko'radi11const pi = 3.14;12function radius(r) {13 return pi * r * r;14}15
16// Bloklar ham o'z scope'iga ega (let, const)17if (true) {18 let x = 5;19 const y = 10;20}21// console.log(x); // XATOKichik test
0 / 51.Qaysi funksiya turini e'lon qilishdan oldin chaqirish mumkin?
2.Arrow funksiyada bitta parametr qanday yoziladi?
3.return yo'q funksiya nima qaytaradi?
4.Default parametr qanday beriladi?
5.Funksiya ichidagi const x = 5; tashqarida?