Tofauti ya Eneo la Kuta ya Kuhesabu katika JavaScript
Wacha tuzingatie msimbo ufuatao:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
test()(); // itatoa 1
test()(); // itatoa 1
Kwa nini daima itakuwa inatoa nambari 1? Ili
kuweza kuelewa hili, wacha tuandike tena msimbo wetu
kwa njia tofauti:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
};
let func1 = test(); //!! chaguo za kukokotoa cha kwanza
func1(); //itatoa 1
let func2 = test(); //!! chaguo za kukokotoa cha pili
func2(); //itatoa 1
Hiyo ni, kila wito wa chaguo za kukokotoa test
kwa njia hii: test()(), huunda chaguo za kukokotoa zake
mwenyewe zenye kufunga kwao na mara moja huita
chaguo za kukokotoa hizo.
Amua, bila kukimbiza msimbo, nini kitaonekana katika konsoli:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
func()();
func()();
func()();
Amua, bila kukimbiza msimbo, nini kitaonekana katika konsoli:
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
let test = func;
test()();
test()();
test()();