Penutupan dan Pelaksanaan Fungsi serta-merta dalam JavaScript
Seperti yang anda sudah tahu, anda boleh memanggil fungsi tanpa nama serta-merta dan menetapkan hasilnya kepada beberapa pembolehubah:
let result = function() {
return '!';
}();
console.log(result); // akan memaparkan '!'
Seringkali fungsi yang dipanggil serta-merta, dalam kes sedemikian, diletakkan dalam kurungan, walaupun ini tidak diperlukan. Ini dilakukan supaya langsung kelihatan bahawa fungsi dipanggil serta-merta:
let result = (function() {
return '!';
})();
console.log(result); // akan memaparkan '!'
Sekarang, biarkan hasil fungsi yang dipanggil serta-merta menjadi fungsi tanpa nama:
let func = (function() {
return function() {
console.log('!');
}
})();
func(); // akan memaparkan '!'
Mari kita buat supaya fungsi yang dipulangkan
menyimpan pembolehubah num dalam penutupan:
let func = (function() {
let num = 1;
return function() {
console.log(num);
}
})();
Jika menambah num++ lagi, maka fungsi
func akan menjadi pembilang siap:
let func = (function() {
let num = 1;
return function() {
console.log(num);
num++;
}
})();
func(); // akan memaparkan 1
func(); // akan memaparkan 2
func(); // akan memaparkan 3
func(); // akan memaparkan 4
func(); // akan memaparkan 5
Tanpa mengintip kod saya, laksanakan pembilang yang sama secara bebas.
Ubah suai kerja pembilang supaya
ia mengira hingga 5, dan kemudian kiraan bermula
semula.