⊗jsPmClCNG 265 of 505 menu

JavaScriptda Global Hisoblagich Oʻzgaruvchisi

num oʻzgaruvchisini funksiyalardan tashqariga chiqaramiz, shu bilan uni global qilamiz:

let num = 1; // global oʻzgaruvchi function test() { return function() { console.log(num); num++; }; }

Bunda barcha qaytarilgan funksiyalar ushbu global oʻzgaruvchini oʻzgartiradi va hisoblagichlar bir-biriga bogʻliq boʻlib ishlaydi:

let num = 1; function test() { return function() { console.log(num); num++; }; } let func1 = test(); // birinchi hisoblagich func1(); // 1 chiqadi func1(); // 2 chiqadi let func2 = test(); // ikkinchi hisoblagich func2(); // 3 chiqadi func2(); // 4 chiqadi

Nima uchun bizning oldingi kodimiz mustaqil hisoblagichlar yaratgan edi? Ushbu kodni eslaymiz:

function test() { let num = 1; return function() { console.log(num); num++; }; };

Gap shundaki, num oʻzgaruvchisi test funksiyasi ichida lokal oʻzgaruvchidir. Shuning uchun har bir test chaqiruvi oʻzining lokal oʻzgaruvchisini yaratadi.

Demak, qaytarilgan funksiyalar test funksiyasining har biriga oʻzining lokal oʻzgaruvchisiga murojat qiladi. Ishlash mustaqilligi shu tarzda erishiladi.

Agar num ni global oʻzgaruvchi qiladigan boʻlsak - bu ham yopilish boʻladi. Faqatgina qaytarilgan funksiyalarning leksik muhitlari bir xil num oʻzgaruvchisiga murojat qiladi - ushbu oʻzgaruvchidagi har qanday oʻzgarishlar barcha funksiyalarda koʻrinadi.

Kodni ishlamasdan, konsolda nima chiqishini aniqlang:

let counter = 0; function test() { return function() { console.log(counter); counter++; }; } let func = test; let func1 = func(); let func2 = func(); func1(); func2(); func1(); func2();

Kodni ishlamasdan, konsolda nima chiqishini aniqlang:

function test() { let counter = 0; return function() { return function() { console.log(counter); counter++; }; }; } let func = test()(); let func1 = func; let func2 = func; func1(); func2(); func1(); func2();

Kodni ishlamasdan, konsolda nima chiqishini aniqlang:

function test() { let counter = 0; return function() { return function() { console.log(counter); counter++; }; }; } let func = test(); let func1 = func(); let func2 = func(); func1(); func2(); func1(); func2();
Oʻzbek
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекTiếng Việt
Biz sayt ishlashi, tahlil qilish va shaxsiylashtirish uchun cookie-fayllardan foydalanamiz. Ma'lumotlarni qayta ishlash Maxfiylik siyosatiga muvofiq amalga oshiriladi.
hammasini qabul qilish sozlash rad etish