JavaScript ရှိ Local Variable Counter နှင့် အပိတ်များ
အောက်ပါကုဒ်ကို စဉ်းစားကြည့်ပါ။
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
test()(); // ပြသမည် 1
test()(); // ပြသမည် 1
အဘယ်ကြောင့် နံပါတ် 1 ကိုသာ အမြဲပြသသနည်း။
ဤအချက်ကို နားလည်ရန် ကျွန်ုပ်တို့၏ကုဒ်ကို
နောက်တစ်နည်းဖြင့် ပြန်ရေးကြည့်ပါမည်။
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
};
let func1 = test(); //!! ပထမဖန်ရှင်တစ်ခု
func1(); //ပြသမည် 1
let func2 = test(); //!! ဒုတိယဖန်ရှင်တစ်ခု
func2(); //ပြသမည် 1
ဆိုလိုသည်မှာ ဤကဲ့သို့ခေါ်ဆိုမှု test()() တစ်ခုစီသည်
၎င်း၏ကိုယ်ပိုင်အပိတ်များပါရှိသော ကိုယ်ပိုင်ဖန်ရှင်အသစ်တစ်ခုကို
ဖန်တီးပြီး ထိုဖန်ရှင်ကို ချက်ချင်းခေါ်ဆိုလိုက်ခြင်းဖြစ်သည်။
ကုဒ်ကို မစမ်းကြည့်ဘဲ ကွန်ဆိုးလ်တွင် အဘယ်အရာကို ပြသမည်ကို ဆုံးဖြတ်ပါ။
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
func()();
func()();
func()();
ကုဒ်ကို မစမ်းကြည့်ဘဲ ကွန်ဆိုးလ်တွင် အဘယ်အရာကို ပြသမည်ကို ဆုံးဖြတ်ပါ။
function func() {
let num = 0;
return function() {
console.log(num);
num++;
};
}
let test = func;
test()();
test()();
test()();