JavaScript ရှိ အမည်ပေးထားသော Function Expressions

အောက်ပါကဲ့သို့ Function Expression တစ်ခု ကျွန်ုပ်တို့တွင် ရှိသည်ဆိုပါစို့။

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

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

ကျွန်ုပ်တို့၏ function ကို func ဟူသော အမည်ပေးကြပါစို့။

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

test();

သင်သိပြီးဖြစ်သည့်အတိုင်း၊ ဤအမည်ဖြင့် function ကို ခေါ်ယူအသုံးပြု၍မရပါ။

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

test(); // '!' ကို ပြသမည်
func(); // အမှားပြန်ပေးမည်

ခေါ်ယူအသုံးပြု၍မရပါက function ကို အမည်ပေးရန် အဘယ်ကြောင့်လိုအပ်သနည်း။ အကြောင်းမှာ ဤအမည်သည် function အပြင်ဘက်မှ မရနိုင်သော်လည်း function အတွင်းမှ ရနိုင်သောကြောင့်ဖြစ်သည်။

စစ်ဆေးကြည့်ရအောင်။

javascriptlet test = function func() {
  console.log(func); // function သည် ၎င်း၏ မူရင်းကုဒ်ကို ပြသမည်
};

test(); // function ကို ခေါ်ယူသည်

ကျွန်ုပ်တို့၏ function ကို ၎င်းအတွင်းမှပင် ခေါ်ယူကြည့်ပါ။

javascriptlet test = function func() {
  console.log('!'); // '!' ကို ပြသသည်
  func(); // မိမိကိုယ်ကို ခေါ်ယူသည်
};

test();

ဤကုဒ်ကို run ပါက console တွင် အဆုံးမရှိသော အကြိမ်အရေအတွက်ဖြင့် ပြသသွားမည်။

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

javascriptlet test = function func() {
  console.log('!');
  test(); // မိမိကိုယ်ကို ခေါ်ယူသည်
};

test();

ကွာခြားချက်က ဘာလဲ။ ကွာခြားချက်မှာ test အမည်သည် variable တစ်ခုသက်သက်သာဖြစ်ခြင်းပါ။ Script အလုပ်လုပ်နေစဉ် ကျွန်ုပ်တို့၏ function သည် တစ်ခြား variable ထဲသို့ ရေးသွင်းခြင်းခံရနိုင်ပြီး သို့မဟုတ် parameter အဖြစ် ပေးပို့ခြင်းခံရနိုင်သည် - ထိုသို့ဖြစ်ပါက variable test နှင့် function အကြားဆက်သွယ်မှု ပျောက်ကွယ်သွားနိုင်သည်။

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

ဤကဲ့သို့ function အမည်ပါသော Function Expression များကို အမည်ပေးထားသော Function Expressions ဟုခေါ်သည်။