Variabel Penghitung Lokal di JavaScript
Perhatikan kode berikut:
javascriptfunction 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:
javascriptfunction 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.
Задание 1
Tentukan, tanpa menjalankan kode, apa yang akan ditampilkan di konsol:
javascriptfunction func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
func()();
func()();
func()();
Задание 2
Tentukan, tanpa menjalankan kode, apa yang akan ditampilkan di konsol:
javascriptfunction func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
let test = func;
test()();
test()();
test()();