⊗jsPmClCNG 265 of 505 menu

JavaScript-də Qlobal Sayğış Dəyişəni

Gəlin <num dəyişənini funksiyaların xaricində elan edək, beləliklə onu qlobal edək:

let num = 1; // qlobal dəyişən function test() { return function() { console.log(num); num++; }; }

Bu halda, bütün qaytarılan funksiyalar bu qlobal dəyişəni dəyişdirəcək və sayğışlar artıq bir-birindən asılı olaraq işləyəcək:

let num = 1; function test() { return function() { console.log(num); num++; }; } let func1 = test(); // birinci sayğış func1(); // 1 çap ediləcək func1(); // 2 çap ediləcək let func2 = test(); // ikinci sayğış func2(); // 3 çap ediləcək func2(); // 4 çap ediləcək

Bəs əvvəlki kodumuz niyə müstəqil sayğışlar yaradırdı? Bu kodu xatırladım:

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

Məsələ ondadır ki, <num dəyişəni - <test funksiyasının daxilində lokal dəyişəndir. Buna görə də hər <test çağırışı öz lokal dəyişənini yaradır.

Buna görə də qaytarılan funksiyalar hər biri <test funksiyasının öz lokal dəyişəninə istinad edəcək. Məhz beləliklə müstəqillik təmin olunur.

Əgər <num-i qlobal dəyişən etsək - bu da bir qapanış olacaq. Sadəcə, qaytarılan funksiyaların leksik mühitləri eyni <num dəyişəninə istinad edir - bu dəyişəndə olan hər hansı dəyişiklik bütün funksiyalarda görünəcək.

Kodu işə salmadan müəyyən edin ki, konsola nə çap olunacaq:

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

Kodu işə salmadan müəyyən edin ki, konsola nə çap olunacaq:

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();

Kodu işə salmadan müəyyən edin ki, konsola nə çap olunacaq:

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();
Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et