JavaScript တွင် Closure များဖြင့် ကောင်တာ

ကျွန်ုပ်တို့ကြည့်ရှုထားသောကုဒ်ကို ပြန်လာသည့်လုပ်ဆောင်ချက်သည် အကြိမ်တိုင်း num ကိန်းရှင်၏တန်ဖိုးကို တစ်ခုစီ တိုးပေးစေရန် ပြန်ရေးကြည့်ပါ။

javascriptfunction test() {
  let num = 1;
  
  return function() {
    console.log(num);
    num++; // တစ်ခုထည့်ပေါင်းသည်
  }
}

let func = test();

ထိုသို့ဆိုလျှင် func လုပ်ဆောင်ချက်ကို ခေါ်ယူသည့်အကြိမ်တိုင်းသည် console တွင် တန်ဖိုးအသစ်ကို ပြသပေးမည်။

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

let func = test();

func(); // 1 ကိုပြမည်
func(); // 2 ကိုပြမည်
func(); // 3 ကိုပြမည်
func(); // 4 ကိုပြမည်
func(); // 5 ကိုပြမည်

ကျွန်ုပ်တို့သည် closure ကို အသုံးပြု၍ (ပိုမိုတိကျစွာပြောရလျှင် ကျွန်ုပ်တို့၏လုပ်ဆောင်ချက်၏ closure မှ num ကိန်းရှင်ကို အသုံးပြု၍) လုပ်ဆောင်ချက်ခေါ်ယူမှု ကောင်တာကို အကောင်အထည်ဖော်ပြီးဖြစ်သည်။

test လုပ်ဆောင်ချက်ကို ခေါ်ယူသည့်အကြိမ်တိုင်းသည် ကိုယ်ပိုင် closure ရှိသည့် လုပ်ဆောင်ချက်အသစ်ကို ပြန်ပေးမည်ကို သတိပြုပါ။ ဆိုလိုသည်မှာ ကောင်တာများကွဲပြားစွာ လွတ်လပ်စွာ အလုပ်လုပ်ကြမည်ဖြစ်သည်။

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

let func1 = test(); // ပထမကောင်တာ
func1();  // 1 ကိုပြမည်
func1();  // 2 ကိုပြမည်

let func2 = test(); // ဒုတိယကောင်တာ
func2();  // 1 ကိုပြမည်
func2();  // 2 ကိုပြမည်

ထိုသို့ဆိုလျှင် တူညီသော num ကိန်းရှင်သည် လုပ်ဆောင်ချက်များကွဲပြားလျှင် တန်ဖိုးမတူညီသော ကိန်းရှင်များအဖြစ် ရှိနေမည်။

ဆိုလိုသည်မှာ ကျွန်ုပ်တို့သည် test လုပ်ဆောင်ချက်ကို နှစ်ကြိမ်ခေါ်ယူလျှင်၊ ၎င်းမှရရှိလာသော လုပ်ဆောင်ချက်များသည် လွတ်လပ်စွာအလုပ်လုပ်ပြီး ထိုလုပ်ဆောင်ချက်တစ်ခုစီတွင် ကိုယ်ပိုင် num ကိန်းရှင်လွတ်လပ်စွာ ရှိနေမည်ဖြစ်သည်။

Задание 1

ကိုယ့်ဘာသာကိုယ်၊ ကျွန်ုပ်၏ကုဒ်ထဲသို့ မကြည့်ဘဲ၊ closure များပေါ်တွင် အလုပ်လုပ်သော လုပ်ဆောင်ချက်ခေါ်ယူမှု ကောင်တာကို အကောင်အထည်ဖော်ပါ။

Задание 2

Closure အတွင်းရှိ လုပ်ဆောင်ချက်သည် 10 ကိန်းကို သိမ်းထားပါစေ။ လုပ်ဆောင်ချက်ကို ခေါ်ယူသည့်အကြိမ်တိုင်းသည် ဤကိန်းကို 1 ဖြင့် လျှော့ချပြီး လျှော့ချထားသောကိန်းကို console တွင် ပြသစေရန် ပြုလုပ်ပါ။

Задание 3

0 အထိ ရေတွက်မှု ရောက်ရှိပြီးနောက် နောက်ထပ် လုပ်ဆောင်ချက်ခေါ်ယူမှုတိုင်းသည် console တွင် ရေတွက်မှု ပြီးဆုံးကြောင်း မက်ဆေ့ဂျ်ကို ပြသစေရန် ယခင်အလုပ်ကို ပြုပြင်မွမ်းမံပါ။