⊗jsPmFCPf 272 of 505 menu

JavaScript တွင် IIFE ၏ သတိမထားမိတတ်သော အချက်များ

ကုဒ်နမူနာ နှစ်ခုကို ကြည့်ရအောင်။

ပထမတစ်ခု။

let result = 1 +function() { return 2; }(); console.log(result);

ဒုတိယတစ်ခု။

let result = 1; +function() { return 2; }(); console.log(result);

ဒီကုဒ် နှစ်ခုဟာ အတူတူနီးပါးဖြစ်ပေမယ့် အလုပ်လုပ်ကြည့်ရင် ရလဒ်ကွဲပြားသွားပါတယ်။ ပထမ ကုဒ်က console တွင် ဂဏန်း 3 ကို ပြမယ်၊ ဒုတိယ ကုဒ်ကတော့ ဂဏန်း 1 ကို ပြပါလိမ့်မယ်။

ဘာကြောင့် ဒီလိုကွာခြားမှုဖြစ်ရတာလဲ။ အကြောင်းရင်းက ပထမ ကုဒ်ရဲ့ ပထမဆုံးလိုင်း နောက်ဆုံးမှာ semicolon (;) မပါဝင်ဘဲ၊ ဒုတိယ ကုဒ်မှာတော့ semicolon ပါနေလို့ပါပဲ။

သင် မေးကောင်းမေးနိုင်တယ်။ JavaScript မှာ command နောက်ဆုံးမှာ semicolon ထည့်ဖို့ မလိုအပ်ဘူးလား။ တကယ်တော့ အဲဒါက အတိအကျမမှန်ပါဘူး။ ဘာတွေတကယ်ဖြစ်နေလဲဆိုတာ နားလည်အောင် လုပ်ကြည့်ရအောင်။

ပထမ ကုဒ်ကို ဒီလိုပြန်ရေးလို့ရပါတယ်။

let result = 1 + function() { return 2; }(); console.log(result); // ပြမည့်ရလဒ် 3

အခုဆိုရင် ရှင်းလင်းသွားပါပြီ။ တစ် (1) ပေါင်းတယ် တစ်ပြိုင်နက် အသုံးပြုသည့် function ရဲ့ ရလဒ်၊ ဆိုလိုတာက 2။ ဒါကြောင့် နောက်ဆုံးရလဒ်က 3 ဖြစ်မယ်။

၁ ရဲ့နောက်မှာ semicolon ထည့်လိုက်ရင်တော့ ကုဒ်ကို interpreter က နောက်တမျိုး နားလည်သွားပါလိမ့်မယ်။

// ပထမ command။ let result = 1; // ဒုတိယ command။ +function() { return 2; }(); // တတိယ command။ console.log(result); // ပြမည့်ရလဒ် 1

ဆိုလိုတာက variable ထဲကို တန်ဖိုးထည့်တာနဲ့ function ကို တစ်ပြိုင်နက် အသုံးပြုတာဟာ ကွဲပြားတဲ့ command နှစ်ခု ဖြစ်သွားတယ်။ ဒါအားလုံးက semicolon ရှိနေလို့ပါ။

ဒီကိစ္စမှာ တစ်ပြိုင်နက် အသုံးပြုသည့် function က ဘာမှမလုပ်ပါဘူး။ ဂဏန်း 2 ကို ပြန်ပေးပြီး result variable အပေါ် ဘယ်လိုမှ သက်ရောက်မှုမရှိပါဘူး။

ဒါဆို JavaScript မှာ semicolon မထည့်လည်းရတယ်ဆိုတာ ဘာကြောင့်လဲ။ Semicolon မပါတဲ့ ဒီလို ကုဒ်ကို ကြည့်ရအောင်။

let result = 1 // result ထဲမှာ 1 ရေးမည် let test = 2 // test ထဲမှာ 2 ရေးမည်

ဒီကုဒ်က မှန်ကန်စွာ အလုပ်လုပ်ပါတယ်။ ဘာကြောင့်လဲဆိုတော့ interpreter က ကိုယ်တိုင် လိုင်းတိုင်းရဲ့ နောက်ဆုံးမှာ semicolon ထည့်ပေးလိုက်လို့ပါ။

ဒါပေမယ့် ဒီလိုကုဒ်မျိုးကို ကြည့်ပါ။

let result = 1 + 2; // result ထဲမှာ 3 ရေးမည်

အခုဆိုရင် ပထမလိုင်းရဲ့ နောက်ဆုံးမှာ semicolon ကို အလိုအလျောက် မထည့်တော့ပါဘူး။ ဘာကြောင့်လဲဆိုတော့ interpreter က ဒုတိယလိုင်းက command ဟာ ပထမလိုင်းက command ရဲ့ အစိတ်အပိုင်းတစ်ခုဖြစ်နေတယ်လို့ နားလည်သွားလို့ပါ။

ဒါပေမယ့် ကိုယ်တိုင် semicolon ထည့်လိုက်ရင်တော့ ရလဒ်က လုံးဝကွဲပြားသွားပါလိမ့်မယ်။

let result = 1; // result ထဲမှာ 1 ရေးမည် + 2; // command က ဘာမှမလုပ်ဘူး၊ ဒါပေမယ့် error လည်းမပေါ်ဘူး

ဆိုလိုတာက interpreter က semicolon ကို အလိုအလျောက်ထည့်ပေးတယ်၊ နောက် command ဟာ ရှေ့က command ရဲ့ အစိတ်အပိုင်းမဖြစ်ဘူးဆိုမှသာ။

ဒီကုဒ်ကို အခု ကြည့်ပါ။

let result = 1 +function() { return 2; }(); console.log(result);

တကယ်ပါပဲ။ ဒုတိယလိုင်းဟာ ပထမလိုင်း command ရဲ့ ရှေ့ဆက်လက်ဖြစ်စဉ်ပဲဖြစ်တယ်။ ဒါကြောင့် interpreter က semicolon ကို အလိုအလျောက် မထည့်တော့ပါဘူး။ ဒါကြောင့် ပထမလိုင်းနောက်ဆုံးမှာ ကိုယ်တိုင် semicolon ရေးလိုက်ရင် ရလဒ်က လုံးဝကွဲပြားသွားပါလိမ့်မယ်။ ဒါက ပြဿနာတွေရှောင်ရှားဖို့ လိုအပ်တဲ့နေရာတွေမှာ အမြဲတမ်း semicolon ထည့်သင့်တယ် လို့ ဆိုလိုတာပါ။

မြန်မာ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
ဝက်ဘ်ဆိုက် လုပ်ဆောင်ခြင်း၊ ဆန်းစစ်လေ့လာခြင်းနှင့် ပုဂ္ဂလိကပြုပြင်ခြင်းအတွက် ကျွန်ုပ်တို့သည် cookie များကို အသုံးပြုပါသည်။ ဒေတာများကို ပြုပြင်ခြင်းသည် ကိုယ်ရေးကိုယ်တာ မူဝါဒအတိုင်း ဖြစ်ပါသည်။
အားလုံးလက်ခံရန် ပြင်ဆင်ရန် ငြင်းပယ်ရန်