JavaScript ရှိ Closure များ
ယခု Closure (closure) ဆိုသော အယူအဆကို လေ့လာကြည့်ရအောင်။ တကယ်တော့ သင်သည် ဤအယူအဆကို ရင်းနှီးပြီးသား ဖြစ်ပါသည်၊ မှန်ကန်သော ဝေါဟာရကို သိရန်သာ ကျန်ရှိတော့သည်။
ထို့ကြောင့်၊ Closure သည် လုပ်ဆောင်ချက်တစ်ခုနှင့် ၎င်းသို့ အသုံးပြုနိုင်သော ပြင်ပကိန်းရှင်များ အားလုံး ပေါင်းစပ်ထားခြင်း ဖြစ်သည်။ သို့မဟုတ်၊ နောက်တစ်နည်းအားဖြင့်၊ Closure သည် လုပ်ဆောင်ချက်နှင့် ၎င်း၏ ဝေါဟာရပတ်ဝန်းကျင် (lexical environment) ပေါင်းစပ်ထားခြင်း ဖြစ်သည်။
JavaScript တွင် "လုပ်ဆောင်ချက်၏ closure" ဟု ပြောလျှင် မကြာခဏဆိုသလို ထိုလုပ်ဆောင်ချက် ကိုယ်တိုင်ကို မဆိုလိုပါ၊ ၎င်း၏ ပြင်ပကိန်းရှင်များကိုသာ ဆိုလိုတတ်သည်။ အကယ်၍ လုပ်ဆောင်ချက်တစ်ခုသည် ၎င်း၏ ဝေါဟာရပတ်ဝန်းကျင်မှ ကိန်းရှင်တစ်ခုကို ရယူပါက၊ "ကိန်းရှင်သည် closure မှ ယူထားသည်" ဟု ပြောလေ့ရှိသည်။
ယခင်သင်ခန်းစာတွင် ကျွန်ုပ်တို့ ရေးခဲ့သော ကုဒ်ကို ပြန်သတိရကြည့်ပါ။
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // 1 ကို ပြသမည်
ဤကိစ္စတွင်၊ func လုပ်ဆောင်ချက်သည်
num ကိန်းရှင်၏ တန်ဖိုးကို closure မှ ရယူသည်ဟု
ပြောနိုင်သည်။ func လုပ်ဆောင်ချက်သည်
num ကိန်းရှင်၏ တန်ဖိုးကို closure တွင်
သိမ်းဆည်းထားသည်ဟုလည်း ပြောနိုင်သည်။