JavaScript ရှိ Local Variable Counter နှင့် အပိတ်များ

အောက်ပါကုဒ်ကို စဉ်းစားကြည့်ပါ။

javascriptfunction test() {
  let num = 1;
  
  return function() {
    console.log(num);
    num++;
  };
}

test()(); // ပြသမည် 1
test()(); // ပြသမည် 1

အဘယ်ကြောင့် နံပါတ် 1 ကိုသာ အမြဲပြသသနည်း။ ဤအချက်ကို နားလည်ရန် ကျွန်ုပ်တို့၏ကုဒ်ကို နောက်တစ်နည်းဖြင့် ပြန်ရေးကြည့်ပါမည်။

javascriptfunction test() {
  let num = 1;
  
  return function() {
    console.log(num);
    num++;
  };
};

let func1 = test(); //!! ပထမဖန်ရှင်တစ်ခု
func1();  //ပြသမည် 1

let func2 = test(); //!! ဒုတိယဖန်ရှင်တစ်ခု
func2();  //ပြသမည် 1

ဆိုလိုသည်မှာ ဤကဲ့သို့ခေါ်ဆိုမှု test()() တစ်ခုစီသည် ၎င်း၏ကိုယ်ပိုင်အပိတ်များပါရှိသော ကိုယ်ပိုင်ဖန်ရှင်အသစ်တစ်ခုကို ဖန်တီးပြီး ထိုဖန်ရှင်ကို ချက်ချင်းခေါ်ဆိုလိုက်ခြင်းဖြစ်သည်။

Задание 1

ကုဒ်ကို မစမ်းကြည့်ဘဲ ကွန်ဆိုးလ်တွင် အဘယ်အရာကို ပြသမည်ကို ဆုံးဖြတ်ပါ။

javascriptfunction func() {
  let num = 0;
  
  return function() {
    console.log(num);
    num++;
  };
}

func()();
func()();
func()();
Задание 2

ကုဒ်ကို မစမ်းကြည့်ဘဲ ကွန်ဆိုးလ်တွင် အဘယ်အရာကို ပြသမည်ကို ဆုံးဖြတ်ပါ။

javascriptfunction func() {
  let num = 0;
  
  return function() {
    console.log(num);
    num++;
  };
}

let test = func;

test()();
test()();
test()();