JavaScript တွင် Closure များနှင့် Immediately Invoked Function Expression (IIFE)

သင်သိပြီးဖြစ်သည့်အတိုင်း၊ အမည်မဲ့ ဖန်ရှင်ကို ချက်ချင်းခေါ်ယူအသုံးပြု၍ ၎င်း၏ရလဒ်ကို အချို့သော variable များသို့ ထည့်ပေးနိုင်ပါသည်။

javascriptlet result = function() {
  return '!';
}();

console.log(result); // '!' ကို ပြသမည်

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

javascriptlet result = (function() {
  return '!';
})();

console.log(result); // '!' ကို ပြသမည်

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

javascriptlet func = (function() {
  return function() {
    console.log('!');
  }
})();

func(); // '!' ကို ပြသမည်

ပြန်ပေးသော ဖန်ရှင်သည် closure ထဲတွင် num variable ကို သိမ်းဆည်းထားစေရန် လုပ်ဆောင်ကြည့်ပါမည်။

javascriptlet func = (function() {
  let num = 1;
  
  return function() {
    console.log(num);
  }
})();

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

javascriptlet func = (function() {
  let num = 1;
  
  return function() {
    console.log(num);
    num++;
  }
})();

func(); // 1 ကို ပြသမည်
func(); // 2 ကို ပြသမည်
func(); // 3 ကို ပြသမည်
func(); // 4 ကို ပြသမည်
func(); // 5 ကို ပြသမည်
Задание 1

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

Задание 2

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