Variabel Penghitung Lokal di JavaScript
Perhatikan kode berikut:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
test()(); // akan menampilkan 1
test()(); // akan menampilkan 1
Mengapa selalu menampilkan angka 1? Untuk
memahaminya, mari tulis ulang kode kita
dengan cara yang berbeda:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
};
let func1 = test(); //!! fungsi pertama
func1(); //akan menampilkan 1
let func2 = test(); //!! fungsi kedua
func2(); //akan menampilkan 1
Artinya, setiap pemanggilan fungsi test
seperti ini: test()(), menciptakan
fungsinya sendiri dengan closurenya sendiri dan segera memanggil
fungsi tersebut.
Tentukan, tanpa menjalankan kode, apa yang akan ditampilkan di konsol:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
func()();
func()();
func()();
Tentukan, tanpa menjalankan kode, apa yang akan ditampilkan di konsol:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
let test = func;
test()();
test()();
test()();