JavaScriptda Closures

JavaScriptda closures haqida o'rganing, ular qanday ishlaydi va JavaScript bilan kuchli kod yaratishda ularning ahamiyati.

So'nggi yangilanish: 2024-01-04

JavaScript Closures: Nima va Qanday Ishlaydi?

Closures JavaScript dunyosida sehrli va kuchli vositalardan biri. Ularni yashirin xazinalar kabi tasavvur qiling, ular JavaScript-ga uning sehrini ishga solishga yordam beradi. Ushbu maqolada biz closures nimadan iborat, qanday ishlaydi va ular JavaScript bilan ajoyib narsalar yaratishda nima uchun muhim ekanligini ochib beramiz.

Closures Nima?

Oddiy so'zlar bilan aytganda, closures funksiyalarga ularni o'rab turgan funksiyalardan o'zgaruvchilarni olish imkonini beradi. Buni funksiyalarning ota funksiyalarining o'zgaruvchilar xazinasiga maxsus yo'l (tunel) orqali kirishiga o'xshatish mumkin. Ushbu tunellar funksiyalar paydo bo'lganda quriladi va ular maxsus aloqaga ega bo'ladi. Ichki va tashqi funksiyalar o'rtasidagi bu aloqa JavaScript-da ko'plab murakkab kodlash strategiyalari va usullarining asosini tashkil etadi.

Closures Misoli

function tashqiFunction() {
    let xazina = "yashirin xazina";

    function ichkiFunction() {
        console.log(xazina);
    }

    return ichkiFunction;
}

const moyaFunction = tashqiFunction();
moyaFunction(); // Natija: yashirin xazina

Ushbu misolda ichkiFunction tashqiFunction ichida e'lon qilingan. tashqiFunction chaqirilganda va ichkiFunction qaytarilganda, u closure hosil qiladi. Ushbu closure ichkiFunctionga tashqiFunctionning sohasidagi xazina o'zgaruvchisiga kirish imkonini beradi, hatto tashqiFunction bajarilishi tugagan bo'lsa ham.

Closures Qo'llash Sohalar

Ma'lumotlarni Kapsulalash

Closure ma'lumotlarni funksiyalar ichida kapsulalashga imkon beradi, bu esa ma'lumotlarga nazoratli kirish imkonini beradi va uni tashqi sohadan yashiradi. Ushbu tushuncha ma'lumotlar butunligini saqlash, kutilmagan o'zgarishlarning oldini olish va yanada modulli kod yaratishda muhimdir.

Ma'lumotlarni Kapsulalash Misoli

function hisoblagichYaratish() {
    let soni = 0;

    return {
        oshirish: function() {
            soni++;
        },
        sonniOlish: function() {
            return soni;
        }
    };
}

const hisoblagich = hisoblagichYaratish();
hisoblagich.oshirish();
console.log(hisoblagich.sonniOlish()); // Natija: 1

Funktsional Dasturlash

Closures funktsional dasturlashda muhim rol o'ynaydi, u yuqori tartibli funksiyalarni yaratishga imkon beradi. Yuqori tartibli funksiyalar boshqa funksiyalarni argument sifatida qabul qiladi yoki funksiya qaytaradi.

Funktsional Dasturlash Misoli

function ko'paytiruvchi(factor) {
    return function(x) {
        return x * factor;
    };
}

const ikkilab = ko'paytiruvchi(2);
const uchlab = ko'paytiruvchi(3);
console.log(ikkilab(5)); // Natija: 10
console.log(uchlab(5)); // Natija: 15

Voqealarni Boshqarish

Closures JavaScript-da voqealarni boshqarishda kuchli vosita hisoblanadi. Ular sizga o'ram sohaning o'zgaruvchilariga kirish huquqini saqlagan holda funksiyalarni voqealarga biriktirish imkonini beradi.

Voqealarni Boshqarish Misoli

function tugmaniOrnatish() {
    let soni = 0;

    document.getElementById("meningTugmam").addEventListener("click", function() {
        soni++;
        console.log(`Tugma ${soni} marta bosildi`);
    });
}

tugmaniOrnatish();

Closures va Memory Boshqaruvi

Closures kuchli imkoniyatlarga ega bo'lsa-da, ehtiyotkorlik bilan boshqarilmasa, ular memory oqimiga olib kelishi mumkin. Closure o'ram sohadagi o'zgaruvchilarga havola qilganda, ular closure ishlatilayotgan bo'lsa, trash to'planadigan bo'lmaydi. Buning oldini olish uchun, kerak bo'lmagan closurelarni o'chirib tashlang.

Memory Boshqaruvi Misoli

let meningClosurem;

function closureYaratish() {
    let ma'lumotlar = "Muhim ma'lumotlar";

    meningClosurem = function() {
        console.log(ma'lumotlar);
    };
}

closureYaratish();
meningClosurem(); // Natija: Muhim ma'lumotlar
meningClosurem = null; // Closureni bo'shatish

Xulosa

Kodlash dunyosida closures - bu funksiyalaringizning moslashuvchanligini va samaradorligini oshiruvchi kichik hamkorlardir. Biroq, closurelarni yaxshi boshqaring. Ularni kerak bo'lmagan paytda qoldirib ketmang. Bu sizning kodingizni tozalaydi va samarali qiladi. Closurelar bilan qurol-yaroqlar qo'rinoqda, siz tez orada ajoyib kod yaratishingiz mumkin!

Qo'shimcha o'qish uchun: JavaScript-da Closurelarni Tushunish