April 3, 2024

JavaScript | Functions

JavaScript Funksiya

JavaScript dasturlash tilida ham boshqa dasturlash tillari singari funksiya mavjud va vazifalari ham o'xshash hisoblanadi. Funksiya uchun qisqacha tarif quyidagicha keltirsak bo'ladi.

Funksiya - ma'lum bir vazifa bajarishga mujjallangan bo'lib dastur kodining bir qismi hisoblanib uni qayta-qayta foydalanish imkoniyati bo'lib kod bo'lagidir.

Masalan: a va b ning ko'paytmasini qaytaradigan dastur kodi.

function myFunction(a, b) {
  return a * b;   // a va b ni ko'paytmasi qaytariladi
} 

JavaScript Funksiya sintaksisi

Funksiya funksiya nomi va () qavs ichida parametrlar qabul qiladi. Funksiya nomi harflar, sonlar, pastgi chiziq va dollor belgilari bo'lishi mumkin. har bir parametr "," vergul bilan ajratilib ko'rsatiladi. Funksiya tanasi figuraviy qavs ichida yoziladi.

function name(parameter1, parameter2, parameter3) {
  //  funksiya tanasi
}

Funksiya Deklaratsiyasi - Function Declaration

Funksiya yaratishning keng qo'llaniladigan yo'li - function declaration.

function kalitso'zi birinchi, keyin esa funksiya nomi, qavs ichida parametrlar funksiyaga o'tkaziladi, va {} qavslari ichida funksiya kodi yoziladi.

function funksiyaNomi(parametr1, parametr2, ...parametrN){
    // function body
}
function sayHello(){
    alert("Salom!");
}
sayHello(); // Salom!
sayHello(); // Salom!
function qo'shish(a, b) {
  return a + b;
}
var son1 = 5;
var son2 = 3;
var natija = qo'shish(son1, son2);
console.log("Natija:", natija);
function ko'paytirish(x, y)
{ return x * y; } 
var son1 = 6;  
var son2 = 4;
var natija = ko'paytirish(son1, son2); 
console.log("Natija:", natija);

Local O'zgaruvchilar

Funksiya ichida yaratilgan o'zgaruvchilar faqatgina funksiya ichida ishlatilishi mumkin.

Masalan:

function sayHello(){
    let message = "Hello Uzbekistan!"
    console.log(message);
}
sayHello(); // Hello Uzbekistan!
console.log(message) // Error! O'zgaruchi funksiya ichida

Function expressions

JavaScriptda "function expressions" degan narsa, funksiyalarni ifodalashning bir qismini ifodalaydi. Bu, funksiyalarni bir o'zgaruvchiga tayinlashga imkon beradi.

const myFunction = function (a, b) {return a * b};
let x = myFunction(4, 3);
const kvadratHisoblash = function(x) 
{ return x * x; };
 let son = 5; 
 let natija = kvadratHisoblash(son); 
 console.log("Natija:", natija);

Bunday funksiyalar ko'plab muammolarni hal qilishda ham ishlatiladi, masalan, callback funksiyalarda, asinxron funksiyalarda, obyektlarga o'zlashtirilgan funksiyalarda, yoki kodni joylashtirishda va boshqa jarayonlarda.

Biror o'zgaruvchi orqali ifodalangan funksiyalarga "function declaration" deb atalgan funksiyalar bilan farq qiladi.

Function Expression va Function Declaration farqlari

Birinchidan, sintaksis: kodda ularni qanday ajratish mumkin.

Function declaration: asosiy kod oqimida alohida bayonot sifatida e'lon qilingan funksiya:

// Funktsiya deklaratsiyasi
funktsiya yig'indisi (a, b) {
   a + b qaytarish;
}

Function declaration: ifoda ichida yoki boshqa sintaktik konstruksiya ichida yaratilgan funksiya. Bu erda funktsiya "topshiriq ifodasi" ning o'ng tomonida yaratilgan =:

// Funktsiya ifodasi
yig'indisi = funktsiya (a, b) {
   a + b qaytarish;
};

Funktsiya JavaScript dvigateli tomonidan yaratilganda eng nozik farq.

  • Hoisting (Ergashish): Function declarationi hoist qilinadi, ya'ni ular skriptning boshida ko'chiriladi. Buning ma'nosi, ular funksiya tanazol etgandan avval chaqirilsa ham bo'ladi. Ammo funksiya ifodalari (function expressions) hoist qilinmaydi, ya'ni ular funksiyalarning yaratilishidan keyin ishlatilishi mumkin.
  • Chaqirish tartiblari: Deklaratsiyalangan funksiyalar, ularning yuklanish tartibiga qaramasdan, skriptning qayeridan chaqirilganligiga qaramasdan chaqirilishi mumkin. Biroq, funksiya ifodalashlari(function expressions) , ularning ifodalashidan keyin chaqirilishi kerak.

Siz funksiya deklaratsiyasini oddiy "function" so'zi bilan yaratishingiz mumkin, lekin funksiya ifodalashlarini qavs ichida yaratishingiz shart.

Arrow functions

Arrow funksiyalari (ya'ni arrow function expressions) ES6 (ECMAScript 2015) qo'shimchasida JavaScriptga kiritilgan yangi funksiya sintaksisidir. Bu funksiya ifodalash shaklida qulaylik va qisqa yol ko'rsatadi.

const sayHello = (name) => { return 'Salom, ' + name; };
const kvadratHisoblash = (x) => {
  return x * x;
};

const son = 5;
const natija = kvadratHisoblash(son);
console.log("Natija:", natija);

Arrow funksiyalarining bir qatorlik shakli o'qishni osonlashtiradi va kodni qisqa qiladi. Ularning boshqa afzalliklari quydagilar:

  1. This ma'no: Arrow funksiyalari keng qo'llaniladigan "this" ma'nolari bilan o'tkaziladi. Ularning o'zining ota objektiga bog'liq "this" ma'nolari yo'q, va ular ya'ni biri-biriga o'tkaziladi. Buning ma'nosi, arrow funksiyalarida "this" ma'nolarining qaytishi usuli keng tarqalgan.
  2. Qisqa kod: Arrow funksiyalari keng tarqalgan va qisqa kod yozishga yordam beradi. Bu, funksiyalarni o'qishni va aniqlashni osonlashtiradi.

Arrow funksiyalari ko'plab situatsiyalarda qulaylik va sodda kod yozishga imkon beradi. Biroq, ularning qulayliklari va cheklanmalarini tushuntirish uchun, ba'zi omillar bo'lishi mumkin. Masalan, ulardan "this" ma'noi mavzusi odatiy funksiyalardan farqli ravishda o'zgaradi.

Loop(takrorlanuvchi operatori).

Biz tez-tez harakatlarni takrorlashimiz kerak.Masalan, ro'yxatdagi tovarlarni ketma-ket chiqarish yoki 1 dan 10 gacha bo'lgan har bir raqam uchun bir xil kodni ishlatish.Looplar bir xil kodni bir necha marta takrorlash usulidir.

JavaScriptda 3 ta keng ishlatiladigan loop turini ko'rsatamiz:

for Loop

: Eng keng ishlatiladigan loop turlaridan biri for loop'dir. U katta miqdordagi kodni takrorlash uchun ishlatiladi.Masalan:

for (begin; condition; step) { // ... loop body ... }
for (let i = 0; i < 5; i++) { console.log(i); } 
// 1 dan 10 gacha bo'lgan sonlar yig'indisini hisoblash
let yigindi = 0;
for (var i = 1; i <= 10; i++) {
  yigindi += i;
}
console.log("1 dan 10 gacha bo'lgan sonlar yig'indisi:", yigindi);

// 1 dan 100 gacha bo'lgan juft sonlar yig'indisini hisletash
let juftYigindi = 0;
for (var j = 2; j <= 100; j += 2) {
  juftYigindi += j;
}
console.log("1 dan 100 gacha bo'lgan juft sonlar yig'indisi:", juftYigindi);

Bu loop 0 dan 4 gacha bo'lgan sonlarni consolga chiqaradi.

while Loop:

While loop shart bajarilg'uncha amalga oshiriladi. Shart rostdan chiqqanda, kod takrorlanadi.Masalan:

while (condition) { // code // so-called "loop body" }
let i = 0; while (i < 5) { console.log(i); i++; } 
let i = 0; while (i < 3) { // shows 0, then 1, then 2 alert( i ); i++; }

// 1 dan 10 gacha bo'lgan sonlar yig'indisini hisoblash
let i = 1;
let yigindi = 0;
while (i <= 10) {
  yigindi += i;
  i++;
}
console.log("1 dan 10 gacha bo'lgan sonlar yig'indisi:", yigindi);

Bu loop ham 0 dan 4 gacha bo'lgan sonlarni consolga chiqaradi.

// 1 dan boshlab 100 gacha bo'lgan juft sonlar yig'indisini hisoblash
let j = 1;
let juftYigindi = 0;
while (j <= 100) {
  if (j % 2 === 0) {
    juftYigindi += j;
  }
  j++;
}
console.log("1 dan 100 gacha bo'lgan juft sonlar yig'indisi:", juftYigindi);

Har qanday ifoda yoki o'zgaruvchi shunchaki taqqoslash emas, masala sharti bo'lishi mumkin: shart baholanadi va while tomonidan mantiqiy qiymatga aylantiriladi.

Masalan, while (i != 0) yozishning qisqaroq usuli while (i):

do...while Loop:

Do...while loop biror amalni bajarilishi lozim bo'lgan har doim bajariladi, so'ng shart tekshiriladi. Bu yuzdan, bir martalik ishni amalga oshirish uchun ishlatiladi.Masalan:

do { // loop body } while (condition);
let i = 0; do { console.log(i); i++; } while (i < 5); 

// 1 dan 10 gacha bo'lgan sonlar yig'indisini hisoblash
let i = 1;
let yigindi = 0;
do {
  yigindi += i;
  i++;
} while (i <= 10);
console.log("1 dan 10 gacha bo'lgan sonlar yig'indisi:", yigindi);

Bu loop ham 0 dan 4 gacha bo'lgan sonlarni consolga chiqaradi.Sintaksisning bu shakli faqat shartning to'g'ri bo'lishidan qat'i nazar, masalaning tanasi kamida bir marta bajarilishini xohlaganingizda ishlatilishi kerak.

// 1 dan boshlab 100 gacha bo'lgan juft sonlar yig'indisini hisoblash
let j = 1;
let juftYigindi = 0;
do {
  if (j % 2 === 0) {
    juftYigindi += j;
  }
  j++;
} while (j <= 100);
console.log("1 dan 100 gacha bo'lgan juft sonlar yig'indisi:", juftYigindi);