JavaScript ပိတ်မှုများ
JavaScript variable များသည် local သို့မဟုတ် global scope နှင့် သက်ဆိုင်ပါသည်။
ပိတ်ခြင်း ဖြင့် Global variable များကို local (သီးသန့်) ပြုလုပ်နိုင်သည် ။
Global Variables
A သည် ဤကဲ့သို့ လုပ်ဆောင်ချက် အတွင်းfunction
သတ်မှတ်ထားသော variable အားလုံးကို ဝင်ရောက်ကြည့်ရှုနိုင်သည် -
ဥပမာ
function myFunction() {
let a = 4;
return a * a;
}
သို့သော် function ပြင်ပတွင်function
သတ်မှတ်ထားသော variable များကိုလည်း ဤကဲ့သို့ဝင်ရောက်ကြည့်ရှုနိုင်သည်-
ဥပမာ
let a = 4;
function myFunction() {
return a * a;
}
နောက်ဆုံးဥပမာတွင် a သည် global variable ဖြစ်သည်။
ဝဘ်စာမျက်နှာတစ်ခုတွင်၊ ဂလိုဘယ်ကိန်းရှင်များသည် ဝင်းဒိုးအရာဝတ္ထုနှင့် သက်ဆိုင်သည်။
စာမျက်နှာ (နှင့် ဝင်းဒိုးတွင်) ရှိ scripts များအားလုံးမှ Global variables များကို အသုံးပြု၍ (ပြောင်းလဲ) နိုင်ပါသည်။
ပထမဥပမာတွင် a သည် local variable ဖြစ်သည်။
Local variable ကို ၎င်းသတ်မှတ်ထားသည့် function အတွင်းတွင်သာ အသုံးပြုနိုင်သည်။ ၎င်းကို အခြားလုပ်ဆောင်ချက်များနှင့် အခြား scripting code များမှ ဝှက်ထားသည်။
နာမည်တူရှိသော ဂလိုဘယ်နှင့် ဒေသဆိုင်ရာ ကိန်းရှင်များသည် မတူညီသော ကိန်းရှင်များဖြစ်သည်။ တစ်ခုကို ပြုပြင်ခြင်း၊ အခြားတစ်ခုကို မွမ်းမံခြင်းမပြုရ။
ကြေငြာသော့ချက်စကားလုံး ( ,
, သို့မဟုတ် ) မပါဘဲ ဖန်တီးထားသော ကိန်းရှင်များသည် လုပ်ဆောင်ချက်တစ်ခုအတွင်း ဖန်တီးထားသော်လည်း ၎င်းတို့သည် အမြဲတမ်း ကမ္ဘာလုံးဆိုင်ရာဖြစ်သည်။var
let
const
ဥပမာ
function myFunction() {
a = 4;
}
ပြောင်းလဲနိုင်သော တစ်သက်တာ
အခြားစာမျက်နှာသို့ သင်သွားသည့်အခါ သို့မဟုတ် ဝင်းဒိုးပိတ်သည့်အခါကဲ့သို့ စာမျက်နှာကို လွှင့်ပစ်သည်အထိ ကမ္ဘာလုံးဆိုင်ရာ ကိန်းရှင်များသည် အသက်ဝင်ပါသည်။
Local variable များတွင် အသက်တိုသည်။ လုပ်ဆောင်ချက်ကို ခေါ်ဆိုသောအခါတွင် ၎င်းတို့ကို ဖန်တီးပြီး လုပ်ဆောင်ချက် ပြီးဆုံးသည့်အခါ ဖျက်ပစ်ပါသည်။
Counter Dilemma တစ်ခု
သင်သည် တစ်စုံတစ်ခုကို ရေတွက်ရန်အတွက် ကိန်းရှင်တစ်ခုကို အသုံးပြုလိုသည်ဆိုပါစို့၊ သင်သည် ဤကောင်တာကို လုပ်ဆောင်ချက်အားလုံးတွင် ရရှိစေလိုသည်ဆိုပါစို့။
function
ကောင်တာတိုးမြှင့်ရန်အတွက် ကမ္ဘာလုံးဆိုင်ရာကိန်းရှင်တစ်ခုနှင့် a ကို အသုံးပြုနိုင်သည် ။
ဥပမာ
// Initiate counter
let counter = 0;
// Function to increment
counter
function add() {
counter += 1;
}
// Call add() 3 times
add();
add();
add();
// The counter should now be 3
အထက်ဖော်ပြပါဖြေရှင်းချက်တွင် ပြဿနာတစ်ခုရှိနေသည်- စာမျက်နှာပေါ်ရှိ မည်သည့်ကုဒ်မဆို add() ကိုမခေါ်ဆိုဘဲ ကောင်တာကို ပြောင်းလဲနိုင်သည်။
add()
အခြားကုဒ်ပြောင်းခြင်းကို တားဆီးရန်အတွက် ကောင်တာသည် လုပ်ဆောင်ချက်အတွက် ဒေသဖြစ်သင့်သည် -
ဥပမာ
// Initiate counter
let counter = 0;
// Function to increment
counter
function add() {
let counter = 0;
counter += 1;
}
//
Call add() 3 times
add();
add();
add();
//The counter should
now be 3. But it is 0
ကျွန်ုပ်တို့သည် ဒေသတွင်းကောင်တာအစား ကမ္ဘာလုံးဆိုင်ရာကောင်တာကို ပြသသောကြောင့် အဆင်မပြေပါ။
လုပ်ဆောင်ချက်ကို ပြန်ပေးခြင်းဖြင့် ကမ္ဘာလုံးဆိုင်ရာကောင်တာကို ဖယ်ရှားပြီး ဒေသတွင်းကောင်တာသို့ ဝင်ရောက်နိုင်သည်-
ဥပမာ
// Function to increment
counter
function add() {
let counter = 0;
counter += 1;
return counter;
}
//
Call add() 3 times
add();
add();
add();
//The counter should
now be 3. But it is 1.
လုပ်ဆောင်ချက်ကို ဖုန်းခေါ်ဆိုတိုင်း စက်တွင်းကောင်တာအား ပြန်လည်သတ်မှတ်ခြင်းကြောင့် အဆင်မပြေပါ။
JavaScript အတွင်းလုပ်ဆောင်ချက်က ဒါကို ဖြေရှင်းပေးနိုင်ပါတယ်။
JavaScript Nested Functions
လုပ်ဆောင်ချက်များ အားလုံးသည် ကမ္ဘာလုံးဆိုင်ရာ နယ်ပယ်သို့ ဝင်ရောက်ခွင့်ရှိသည်။
အမှန်မှာ၊ JavaScript တွင်၊ လုပ်ဆောင်ချက်များအားလုံးသည် ၎င်းတို့အပေါ် "အထက်" နယ်ပယ်သို့ ဝင်ရောက်ခွင့်ရှိသည်။
JavaScript သည် nested လုပ်ဆောင်ချက်များကို ပံ့ပိုးပေးသည်။ Nested လုပ်ဆောင်ချက်များသည် ၎င်းတို့ "အထက်" နယ်ပယ်သို့ ဝင်ရောက်နိုင်သည်။
ဤဥပမာတွင်၊ အတွင်းလုပ်ဆောင်ချက် သည် ပင်မလုပ်ဆောင်ချက်ရှိ ကိန်းရှင် plus()
သို့ ဝင်ရောက်ခွင့် ရှိသည်-counter
ဥပမာ
function add() {
let counter = 0;
function plus() {counter += 1;}
plus();
return counter;
}
plus()
ကျွန်ုပ်တို့သည် ပြင်ပမှ လုပ်ဆောင်ချက်များကို ရောက်ရှိနိုင်လျှင် တန်ပြန်အကျပ်အတည်းကို ဖြေရှင်းနိုင် မည်ဖြစ်သည်။
counter = 0
တစ်ကြိမ်သာ လုပ်ဆောင်ရန် နည်းလမ်းကိုလည်း ကျွန်ုပ်တို့ ရှာဖွေရန် လိုအပ်ပါသည် ။
ပိတ်ဖို့ လိုတယ်။
JavaScript ပိတ်မှုများ
မိမိကိုယ်ကို ခေါ်ဆိုခြင်း လုပ်ဆောင်ချက်များကို မှတ်မိပါသလား။ ဒီ function ကဘာလုပ်တာလဲ။
ဥပမာ
const add = (function () {
let counter = 0;
return function () {counter += 1; return counter}
})();
add();
add();
add();
// the counter is now 3
နမူနာရှင်းပြထားပါတယ်။
ကိန်းရှင် add
အား မိမိဘာသာခေါ်ဆိုသည့် လုပ်ဆောင်ချက်တစ်ခု၏ ပြန်ပို့တန်ဖိုးတွင် သတ်မှတ်ထားသည်။
မိမိကိုယ်ကို ခေါ်ဆိုခြင်း လုပ်ဆောင်ချက်သည် တစ်ကြိမ်သာ လုပ်ဆောင်သည်။ ၎င်းသည် ကောင်တာအား သုည (0) ဖြင့် သတ်မှတ်ပေးပြီး လုပ်ဆောင်ချက်ဖော်ပြချက်ကို ပြန်ပေးသည်။
ဤနည်းဖြင့် add သည် function တစ်ခုဖြစ်လာသည်။ "အံ့ဩစရာကောင်းသော" အပိုင်းမှာ ပင်မနယ်ပယ်ရှိ ကောင်တာသို့ ဝင်ရောက်နိုင်ခြင်းဖြစ်သည်။
၎င်းကို JavaScript ပိတ်ခြင်းဟုခေါ်သည်။ ၎င်းသည် function တစ်ခုအတွက် " private " variables များ ရှိစေသည် ။
ကောင်တာအား အမည်မသိလုပ်ဆောင်ချက်၏ အတိုင်းအတာဖြင့် ကာကွယ်ထားပြီး ပေါင်းထည့်သည့်လုပ်ဆောင်ချက်ကို အသုံးပြုမှသာ ပြောင်းလဲနိုင်သည်။
ပိတ်ခြင်းသည် ပင်မလုပ်ဆောင်ချက်ကို ပိတ်ပြီးနောက်တွင်ပင် ပင်မနယ်ပယ်သို့ ဝင်ရောက်နိုင်သည့် လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။