Pembilang Pembolehubah Tempatan dalam JavaScript
Pertimbangkan kod berikut:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
test()(); // akan memaparkan 1
test()(); // akan memaparkan 1
Mengapa sentiasa memaparkan nombor 1? Untuk
memahaminya, mari tulis semula kod kita
dengan cara yang berbeza:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
};
let func1 = test(); //!! fungsi pertama
func1(); //akan memaparkan 1
let func2 = test(); //!! fungsi kedua
func2(); //akan memaparkan 1
Iaitu, setiap panggilan fungsi test
seperti ini: test()(), mencipta
fungsinya sendiri dengan penutupannya sendiri dan serta-merta memanggil
fungsi tersebut.
Tentukan, tanpa menjalankan kod, apakah yang akan dipaparkan dalam konsol:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
func()();
func()();
func()();
Tentukan, tanpa menjalankan kod, apakah yang akan dipaparkan dalam konsol:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
let test = func;
test()();
test()();
test()();