JavaScript နယ်ပယ်
ဘောင်သည် ကိန်းရှင်များ၏ ဝင်ရောက်နိုင်မှု (မြင်နိုင်မှု) ကို ဆုံးဖြတ်သည်။
JavaScript တွင် နယ်ပယ် 3 မျိုး ရှိသည်။
- ပိတ်ဆို့ခြင်းနယ်ပယ်
- လုပ်ဆောင်ချက် နယ်ပယ်
- ကမ္ဘာလုံးဆိုင်ရာ နယ်ပယ်
Block Scope
ES6 (2015) မတိုင်မီ၊ JavaScript တွင် Global Scope နှင့် Function Scope သာ ရှိသည်။
ES6 သည် အရေးကြီးသော JavaScript သော့ချက်စာလုံးအသစ်နှစ်ခုကို မိတ်ဆက်ပေးခဲ့သည်- let
နှင့် const
.
ဤသော့ချက်စကားလုံးနှစ်လုံး သည် JavaScript တွင် Block Scope ကိုပေးသည်။
{ } ဘလောက်တစ်ခုအတွင်းတွင် ဖော်ပြထားသော ကိန်းရှင်များကို ဘလောက်ပြင်ပမှ ဝင်ရောက်၍မရပါ။
ဥပမာ
{
let x = 2;
}
// x can NOT be used here
သော့ချက်စကားလုံး ဖြင့် ကြေညာ var
ထားသော ကိန်းရှင်များသည် ပိတ်ဆို့ခြင်းနယ်ပယ်တွင် မရှိနိုင်ပါ။
{ } ဘလောက်တစ်ခုအတွင်းတွင် ကြေငြာထားသော ပြောင်းလွဲမှုများကို ဘလောက်ပြင်ပမှ ဝင်ရောက်ကြည့်ရှုနိုင်ပါသည်။
ဥပမာ
{
var x = 2;
}
// x CAN be used here
Local Scope
JavaScript လုပ်ဆောင်ချက်အတွင်း ကြေညာထားသော ကိန်းရှင်များသည် လုပ်ဆောင်ချက်အတွက် LOCAL ဖြစ်လာသည် ။
ဥပမာ
// code here can NOT use carName
function myFunction() {
let carName = "Volvo";
// code here CAN use carName
}
// code here can NOT use carName
Local variable များတွင် Function Scope ရှိသည် -
၎င်းတို့ကို လုပ်ဆောင်ချက်အတွင်းမှသာ ဝင်ရောက်နိုင်သည်။
Local variable များကို ၎င်းတို့၏ လုပ်ဆောင်ချက်များတွင်သာ အသိအမှတ်ပြုထားသောကြောင့်၊ အမည်တူ ကိန်းရှင်များကို မတူညီသော လုပ်ဆောင်ချက်များတွင် အသုံးပြုနိုင်ပါသည်။
လုပ်ဆောင်ချက်တစ်ခု စတင်သောအခါတွင် ဒေသဆိုင်ရာ ကိန်းရှင်များကို ဖန်တီးပြီး လုပ်ဆောင်ချက်ပြီးမြောက်သောအခါ ဖျက်ပစ်သည်။
လုပ်ဆောင်ချက် နယ်ပယ်
JavaScript တွင် လုပ်ဆောင်ချက်နယ်ပယ် ရှိသည်- လုပ်ဆောင်ချက်တစ်ခုစီသည် နယ်ပယ်အသစ်တစ်ခုကို ဖန်တီးသည်။
လုပ်ဆောင်ချက်တစ်ခုအတွင်း သတ်မှတ်ထားသော ကိန်းရှင်များသည် လုပ်ဆောင်ချက်ပြင်ပမှ ဝင်ရောက်နိုင် (မမြင်နိုင်) မဟုတ်ပါ။
နှင့် ကြေ ငြာထားသော ကိန်းရှင်များသည် var
၊ let
နှင့် const
function တစ်ခုအတွင်း ကြေငြာသောအခါ အတော်လေး ဆင်တူပါသည်။
၎င်းတို့အားလုံးတွင် Function Scope ရှိသည် ။
function myFunction() {
var carName = "Volvo";
// Function Scope
}
function myFunction() {
let carName = "Volvo"; //
Function Scope
}
function myFunction() {
const carName = "Volvo"; //
Function Scope
}
Global JavaScript Variables
function တစ်ခုပြင်ပတွင်ကြေငြာထားသော variable သည် GLOBAL ဖြစ်လာသည် ။
ဥပမာ
let carName = "Volvo";
// code here can use carName
function myFunction() {
// code here can also use carName
}
Global variable တွင် Global Scope ရှိသည်-
ဝဘ်စာမျက်နှာရှိ script များနှင့် လုပ်ဆောင်ချက်များ အားလုံးသည် ၎င်းကို ဝင်ရောက်နိုင်သည်။
ကမ္ဘာလုံးဆိုင်ရာ နယ်ပယ်
ကမ္ဘာလုံးဆိုင်ရာ ကြေငြာ ထားသော ကိန်းရှင်များ (မည်သည့်လုပ်ဆောင်ချက်မဆို အပြင်) တွင် Global Scope ရှိသည်။
Global variable များကို JavaScript ပရိုဂရမ်ရှိ မည်သည့်နေရာမှမဆို ဝင်ရောက်ကြည့်ရှုနိုင်ပါသည်။
နှင့် ကြေငြာထားသော ကိန်းရှင် များသည် var
၊ let
နှင့် const
block တစ်ခုပြင်ပတွင်ကြေငြာသောအခါ အတော်လေးဆင်တူပါသည်။
၎င်းတို့အားလုံးတွင် Global Scope ရှိသည် ။
var x = 2;
// Global scope
let x = 2; //
Global scope
const x = 2; //
Global scope
JavaScript အပြောင်းအလဲများ
JavaScript တွင်၊ အရာဝတ္ထုများနှင့် လုပ်ဆောင်ချက်များသည် ပြောင်းလဲနိုင်သော ကွဲပြားမှုများဖြစ်သည်။
Scope သည် ကုဒ်၏ မတူညီသော အစိတ်အပိုင်းများမှ ကိန်းရှင်များ၊ အရာဝတ္ထုများနှင့် လုပ်ဆောင်ချက်များကို ဝင်ရောက်နိုင်မှုအား ဆုံးဖြတ်သည်။
အလိုအလျောက် ကမ္ဘာလုံးဆိုင်ရာ
မကြေငြာရသေးသော ကိန်းရှင်တစ်ခုသို့ တန်ဖိုးတစ်ခုသတ်မှတ်ပါက၊ ၎င်းသည် အလိုအလျောက် GLOBAL ကိန်းရှင်ဖြစ်လာမည်ဖြစ်သည်။
carName
ဤကုဒ်နမူနာ သည် လုပ်ဆောင်ချက်တစ်ခုအတွင်း တန်ဖိုးကို သတ်မှတ်ပေးထားသည့်တိုင် ကမ္ဘာလုံးဆိုင်ရာ ပြောင်းလဲနိုင်သောကိန်းရှင်တစ်ခုကို ကြေညာပါမည် ။
ဥပမာ
myFunction();
// code here can use carName
function myFunction() {
carName = "Volvo";
}
တင်းကျပ်သောမုဒ်
ခေတ်မီဘရောက်ဆာများအားလုံးသည် "တင်းကျပ်သောမုဒ်" တွင် JavaScript လုပ်ဆောင်ခြင်းကို ပံ့ပိုးပေးသည်။
ဤသင်ခန်းစာ၏ နောက်ပိုင်းအခန်းတွင် တင်းကျပ်သောမုဒ်ကို မည်သို့အသုံးပြုရမည်ကို သင်ပိုမိုလေ့လာနိုင်မည်ဖြစ်ပါသည်။
"တင်းကျပ်သောမုဒ်တွင်" မကြေငြာထားသော ကိန်းရှင်များသည် အလိုအလျောက် ဂလိုဘယ်မဟုတ်ပါ။
HTML ရှိ Global Variables
JavaScript ဖြင့်၊ ကမ္ဘာလုံးဆိုင်ရာနယ်ပယ်သည် JavaScript ပတ်ဝန်းကျင်ဖြစ်သည်။
HTML တွင်၊ global scope သည် window object ဖြစ်သည်။
သော့ချက်စကားလုံး ဖြင့် သတ်မှတ်ထားသော ကမ္ဘာလုံးဆိုင်ရာ ကိန်းရှင် var
များသည် ဝင်းဒိုးအရာဝတ္ထုနှင့် သက်ဆိုင်သည်-
ဥပမာ
var carName = "Volvo";
// code here
can use window.carName
သော့ချက်စကားလုံး ဖြင့် သတ်မှတ်ထားသော ကမ္ဘာလုံးဆိုင်ရာ ကိန်းရှင် let
များသည် ဝင်းဒိုးအရာဝတ္ထုနှင့် မသက်ဆိုင်ပါ။
ဥပမာ
let carName = "Volvo";
// code here can not use window.carName
သတိပေးချက်
သင်ရည်ရွယ်မထားပါက ကမ္ဘာလုံးဆိုင်ရာ ကိန်းရှင်များကို မဖန်တီးပါနှင့်။
သင်၏ ကမ္ဘာလုံးဆိုင်ရာ ကိန်းရှင်များ (သို့မဟုတ် လုပ်ဆောင်ချက်များ) သည် window variables (သို့မဟုတ် functions) များကို overwrite လုပ်နိုင်သည်။
ဝင်းဒိုးအရာဝတ္တုအပါအဝင် မည်သည့်လုပ်ဆောင်ချက်မဆို၊ သင်၏ကမ္ဘာလုံးဆိုင်ရာ ကိန်းရှင်များနှင့် လုပ်ဆောင်ချက်များကို ထပ်ရေးနိုင်သည်။
JavaScript Variables များ၏ သက်တမ်း
JavaScript variable ၏ သက်တမ်းသည် ၎င်းကို ကြေငြာသည့်အခါ စတင်သည်။
လုပ်ဆောင်ချက်ပြီးမြောက်သောအခါတွင် လုပ်ဆောင်ချက် (ပြည်တွင်း) ကိန်းရှင်များကို ဖျက်လိုက်ပါသည်။
ဝဘ်ဘရောက်ဆာတစ်ခုတွင်၊ သင်ဘရောက်ဆာဝင်းဒိုး (သို့မဟုတ်တက်ဘ်) ကိုပိတ်သောအခါ ကမ္ဘာလုံးဆိုင်ရာပြောင်းလွဲချက်များကို ဖျက်ပစ်ပါသည်။
Function Arguments
Function arguments (parameters) များသည် function အတွင်းရှိ local variable များအဖြစ် အလုပ်လုပ်ပါသည်။