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