IIFE တွင် လုံခြုံရေးအတွက် စမ်ကွင်း
အခု ကျွန်ုပ်တို့ရဲ့ Immediately Invoked Function Expression ကို အစမှာ ပေါင်းလဒ်နဲ့ မဟုတ်ဘဲ ကွင်းစကွင်းပိတ်နဲ့ ဝန်းရံထားတဲ့ ပုံစံ၊ ဒီလိုမျိုးပြောင်းကြည့်ရအောင်။
javascript(function() {
console.log(1); // 1 ကို ပြသမည်
})();
ဒီ function အပြင်ဘက်မှာ num ဆိုတဲ့ variable ကို
သတ်မှတ်ပါစို့။
javascriptlet num = 1; // စမ်ကွင်း ထားရှိသည်
(function() {
console.log(num); // 1 ကို ပြသမည်
})();
အခု စမ်ကွင်း ထည့်ရမယ့်အစား မေ့သွားတယ်ဆိုပါစို့။
javascriptlet num = 1
(function() {
console.log(num); //!! အမှား တက်လာမည်
})();
ဒီကုဒ်က အမှားတက်လာမှာ ဖြစ်ပါတယ်။ ဘာလို့လဲဆိုတော့ JavaScript က ကျွန်ုပ်တို့ရဲ့ function ကို ပထမဆုံးစာကြောင်းရဲ့ ဆက်လက်တစ်ခုအဖြစ် မှတ်ယူလိုက်လို့ပါ။
ဒီလိုပြဿနာတွေကို ရှောင်ရှားနိုင်ဖို့ Immediately Invoked Function Expression ကို မခေါ်မီ အမြဲတမ်း စမ်ကွင်းထည့်ပေးရပါမယ်၊ ဒီလိုမျိုးပေါ့။
javascriptlet num = 1
;(function() {
console.log(num); // 1 ကို ပြသမည်
})();
ဒီပြဿနာက အတွေးအခေါ်ပိုင်းဆိုင်ရာလို့ ထင်ရပေမယ့် တကယ်တော့ မဟုတ်ပါဘူး။ သင့်ရဲ့ စာမျက်နှာမှာ သီးခြား ဖိုင်တွေကနေ script တချို့ကို ချိတ်ဆက်အသုံးပြုနေတဲ့ အခြေအနေမျိုး ဖြစ်နိုင်ပါတယ်။ ဒီလိုအခြေအနေမှာ ပထမဖိုင်ရဲ့ အဆုံးမှာ စမ်ကွင်း ချန်လှပ်ထားမိရင် ဒုတိယဖိုင်က Immediately Invoked Function Expression နဲ့ စတယ်ဆိုရင် အလိုအလျောက် ပြဿနာ ဖြစ်လာနိုင်ပါတယ်။
ဒါကြောင့်၊ အမြဲတမ်း - အမြဲတမ်း Immediately Invoked Function Expression ကို မခေါ်မီ စမ်ကွင်း ထည့်ပါ။ အခုချိန်မှာ ပြဿနာမရှိဘူးလို့ သင်ထင်နေရင်တောင် ထည့်ပါ။ နောင်မှာ ပြဿနာတွေ ပေါ်လာနိုင်လို့ပါ။
အထက်ပါအချက်ကို အသုံးချပြီး Immediately Invoked Function Expression ကို ခေါ်ကြည့်ရအောင်။ အစမှာ စမ်ကွင်းထည့်ပြီးတော့ပေါ့။
javascript;(function() {
console.log(1); // 1 ကို ပြသမည်
})();
ကုဒ်ကို မဖွင့်ဘဲ ဘာထွက်လာမလဲဆိုတာ ဆုံးဖြတ်ပါ။
javascriptlet str = 'str';
(function() {
console.log(1);
})();
ကုဒ်ကို မဖွင့်ဘဲ ဘာထွက်လာမလဲဆိုတာ ဆုံးဖြတ်ပါ။
javascriptlet str = 'str'
(function() {
console.log(1);
})();