Penutupan dan Pemanggilan Fungsi di Tempat dalam JavaScript
Seperti yang sudah Anda ketahui, Anda dapat memanggil fungsi anonim di tempat dan menetapkan hasil kerjanya ke suatu variabel:
let result = function() {
return '!';
}();
console.log(result); // akan menampilkan '!'
Seringkali fungsi yang dipanggil di tempat, dalam kasus seperti ini, ditempatkan dalam tanda kurung, meskipun sebenarnya tidak perlu. Ini dilakukan agar langsung terlihat bahwa fungsi dipanggil di tempat:
let result = (function() {
return '!';
})();
console.log(result); // akan menampilkan '!'
Sekarang, misalkan hasil dari fungsi yang dipanggil di tempat adalah fungsi anonim:
let func = (function() {
return function() {
console.log('!');
}
})();
func(); // akan menampilkan '!'
Mari kita buat agar fungsi yang dikembalikan
menyimpan variabel num dalam penutupan:
let func = (function() {
let num = 1;
return function() {
console.log(num);
}
})();
Jika ditambahkan num++, maka fungsi
func akan menjadi pencatat yang siap pakai:
let func = (function() {
let num = 1;
return function() {
console.log(num);
num++;
}
})();
func(); // akan menampilkan 1
func(); // akan menampilkan 2
func(); // akan menampilkan 3
func(); // akan menampilkan 4
func(); // akan menampilkan 5
Tanpa melihat kode saya, coba implementasikan pencatat serupa sendiri.
Modifikasi kerja pencatat sehingga
ia menghitung hingga 5, lalu hitungan dimulai
ulang dari awal.