⊗jsPmClCNG 265 of 505 menu

Pembolehubah Pembilang Global dalam JavaScript

Mari letakkan pembolehubah num di luar fungsi, sekaligus menjadikannya global:

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

Dalam kes ini, semua fungsi yang dipulangkan akan mengubah pembolehubah global ini dan pembilang akan berfungsi secara bergantung antara satu sama lain:

let num = 1; function test() { return function() { console.log(num); num++; }; } let func1 = test(); // pembilang pertama func1(); // akan output 1 func1(); // akan output 2 let func2 = test(); // pembilang kedua func2(); // akan output 3 func2(); // akan output 4

Mengapa kod kita sebelumnya membuat pembilang yang bebas? Ingat semula kod ini:

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

Hal ini kerana pembolehubah num adalah setempat (lokal) di dalam fungsi test. Oleh itu, setiap panggilan test menghasilkan pembolehubah setempatnya sendiri.

Oleh itu, fungsi-fungsi yang dipulangkan akan merujuk masing-masing kepada pembolehubah setempat fungsi test. Dengan cara inilah kebebasan operasi dicapai.

Jika num dijadikan pembolehubah global - ia tetap merupakan penutupan (closure). Cuma persekitaran leksikal fungsi-fungsi yang dipulangkan merujuk kepada pembolehubah num yang sama - sebarang perubahan pada pembolehubah ini akan kelihatan dalam semua fungsi.

Tentukan, tanpa menjalankan kod, apakah yang akan dipaparkan dalam konsol:

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

Tentukan, tanpa menjalankan kod, apakah yang akan dipaparkan dalam konsol:

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

Tentukan, tanpa menjalankan kod, apakah yang akan dipaparkan dalam konsol:

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();
Melayu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan kuki untuk operasi laman web, analisis dan personalisasi. Pemprosesan data dijalankan mengikut Polisi Kerahsiaan.
terima semua tataletak tolak