⊗jsPmClCNG 265 of 505 menu

JavaScript'te Global Sayaç Değişkeni

Değişkeni num fonksiyonların dışına alalım, böylece onu global yapalım:

let num = 1; // global değişken function test() { return function() { console.log(num); num++; }; }

Bu durumda, döndürülen tüm fonksiyonlar bu global değişkeni değiştirecek ve sayaçlar artık birbirine bağımlı çalışacak:

let num = 1; function test() { return function() { console.log(num); num++; }; } let func1 = test(); // ilk sayaç func1(); // 1 yazdırır func1(); // 2 yazdırır let func2 = test(); // ikinci sayaç func2(); // 3 yazdırır func2(); // 4 yazdırır

Peki önceki kodumuz neden bağımsız sayaçlar yapıyordu? Bu kodu hatırlatayım:

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

Olay şu ki, num değişkeni test fonksiyonunun içinde yerel (lokal) bir değişkendir. Bu nedenle her test çağrısı kendi yerel değişkenini oluşturur.

Bu nedenle, döndürülen fonksiyonların her biri test fonksiyonunun kendi yerel değişkenine referans gösterecektir. Bağımsız çalışma tam olarak bu şekilde sağlanır.

num değişkenini global bir değişken yapmak - bu da bir closure'dur. Sadece, döndürülen fonksiyonların sözlüksel ortamları (lexical environments) aynı num değişkenine referans gösterir - bu değişkendeki herhangi bir değişiklik tüm fonksiyonlarda görülebilir olacaktır.

Kodu çalıştırmadan, konsola ne yazdırılacağını belirleyin:

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 çalıştırmadan, konsola ne yazdırılacağını belirleyin:

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 çalıştırmadan, konsola ne yazdırılacağını belirleyin:

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();
Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet