⊗jsPmClCr 263 of 505 menu

Penutup dalam JavaScript

Mari kita tulis semula kod yang kita pertimbangkan supaya fungsi yang dipulangkan setiap kali meningkatkan nilai pembolehubah num secara satu:

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

Ternyata bahawa setiap panggilan fungsi func akan memaparkan nilai baru dalam konsol:

function test() { let num = 1; return function() { console.log(num); num++; } } let func = test(); func(); //akan memaparkan 1 func(); //akan memaparkan 2 func(); //akan memaparkan 3 func(); //akan memaparkan 4 func(); //akan memaparkan 5

Ternyata, kami telah melaksanakan pembilang panggilan fungsi, menggunakan penutupan (lebih tepat menggunakan pembolehubah num daripada penutupan fungsi kami).

Perlu diingat bahawa setiap panggilan fungsi test akan memulangkan fungsi baru, yang akan mempunyai penutupannya sendiri. Iaitu, pembilang yang berbeza akan berfungsi secara bebas:

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

Ternyata bahawa pembolehubah yang sama num untuk fungsi yang berbeza akan mempunyai nilai yang berbeza!

Iaitu, jika kita memanggil fungsi test dua kali, maka fungsi yang diperoleh daripadanya akan berfungsi secara bebas dan setiap fungsi ini akan mempunyai bebasnya sendiri pembolehubah num.

Secara bebas, tanpa melihat kod saya, laksanakan pembilang panggilan fungsi, berfungsi pada penutupan.

Biarkan fungsi dalam penutupan menyimpan nombor 10. Lakukan supaya setiap panggilan fungsi mengurangkan nombor ini sebanyak 1 dan memaparkan nombor yang dikurangkan dalam konsol.

Ubah suai tugas sebelumnya supaya kiraan turun hingga 0, dan kemudian setiap panggilan fungsi seterusnya memaparkan dalam konsol mesej bahawa kiraan telah tamat.

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