JavaScript တွင် လက်ဆစ်ဆန်သော ဝန်းကျင် လုပ်ဆောင်ချက်များ၏ အသုံးပြုမှု

ကိုယ်ပိုင်ရလဒ်အဖြစ် အခြားလုပ်ဆောင်ချက်ကို ပြန်ပေးသည့် လုပ်ဆောင်ချက်ရှိသည်ဆိုပါစို့။

javascriptfunction test() {
  return function() {
    
  }
}

မိဘလုပ်ဆောင်ချက်တွင် မည်သည့်အရာမဆို ကိန်ရှင်များရှိပါက၊ ထိုကိန်ရှင်များသည် ပြန်လာမည့်လုပ်ဆောင်ချက်၏ လက်ဆစ်ဆန်သော ဝန်းကျင်ထဲတွင် ပါဝင်လိမ့်မည်။

javascriptfunction test() {
  let num = 1; // မိဘလုပ်ဆောင်ချက်၏ ကိန်ရှင်
  
  return function() {
    // လက်ဆစ်ဆန်သော ဝန်းကျင် = {num: 1}
  }
}

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

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

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

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

let func = test();

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

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

let func = test();
func(); // 1 ကိုထုတ်ပြလိမ့်မည်

လုပ်ဆောင်ချက်အပြင်ဘက်တွင် ကိန်ရှင် num ကို ရိုးရိုးရှင်းရှင်းထုတ်ရန် ကြိုးစားပါက - ၎င်းသည် မရရှိနိုင်ပါ။

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

console.log(num); // ကိန်ရှင် num သည် ဤနေရာတွင် မရရှိနိုင်ပါ

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

တကယ်တော့ အလားတူရလဒ်ကို ကိန်ရှင် num ကို ကမ္ဘာလုံးဆိုင်ရာအဖြစ် ဖန်တီးခြင်းဖြင့် ရရှိနိုင်ပါသည်။

javascriptfunction test() {
  return function() {
    console.log(num);
  }
}

let num = 1; // ကမ္ဘာလုံးဆိုင်ရာ ကိန်ရှင်
let func = test();
func(); // 1 ကိုထုတ်ပြလိမ့်မည်

သို့ရာတွင်၊ ဤနေရာတွင် သိသိသာသာ ကွာခြားမှုရှိပါမည်။ အသစ်သောဗားရှင်းတွင် ကိန်ရှင် num ကို လုပ်ဆောင်ချက်များအပြင်ဘက်တွင် ပြောင်းလဲနိုင်သည် (အဘယ်ကြောင့်ဆိုသော် ၎င်းသည် ကမ္ဘာလုံးဆိုင်ရာဖြစ်သောကြောင့်)၊ အဟောင်းတွင် - မရပါ။

Задание 1

ကုဒ်ကို မစတင်ဘဲ၊ ကွန်ဆိုးထဲသို့ ဘာထွက်လာမည်ကို သတ်မှတ်ပါ။

javascriptfunction test() {
  let num1 = 1;
  let num2 = 2;
  
  return function() {
    return num1 + num2;
  }
}

let func = test();
console.log(func());
Задание 2

ကုဒ်ကို မစတင်ဘဲ၊ ကွန်ဆိုးထဲသို့ ဘာထွက်လာမည်ကို သတ်မှတ်ပါ။

javascriptfunction test() {
  let num1 = 1;
  let num2 = 2;
  
  return function() {
    return num1 + num2;
  }
}

console.log(test()());
Задание 3

ကုဒ်ကို မစတင်ဘဲ၊ ကွန်ဆိုးထဲသို့ ဘာထွက်လာမည်ကို သတ်မှတ်ပါ။

javascriptfunction test() {
  let num1 = 1;
  
  return function() {
    return num1 + num2;
  }
}

let num2 = 2;
let func = test();
console.log(func());
Задание 4

ကုဒ်ကို မစတင်ဘဲ၊ ကွန်ဆိုးထဲသို့ ဘာထွက်လာမည်ကို သတ်မှတ်ပါ။

javascriptfunction test() {
  let num = 1;
  
  return function() {
    return num;
  }
}

let num = 2;
let func = test();
console.log(func());