Pembilang Pembolehubah Tempatan dalam JavaScript
Pertimbangkan kod berikut:
javascriptfunction 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:
javascriptfunction 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.
Задание 1
Tentukan, tanpa menjalankan kod, apakah yang akan dipaparkan dalam konsol:
javascriptfunction func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
func()();
func()();
func()();
Задание 2
Tentukan, tanpa menjalankan kod, apakah yang akan dipaparkan dalam konsol:
javascriptfunction func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
let test = func;
test()();
test()();
test()();