JavaScript ကို တင်းကျပ်စွာ အသုံးပြုပါ။
"use strict";
JavaScript ကုဒ်ကို "တင်းကျပ်သောမုဒ်" တွင် လုပ်ဆောင်သင့်သည်ဟု သတ်မှတ်သည်။
"တင်းကျပ်သောအသုံးပြုမှု" ညွှန်ကြားချက်
"use strict"
ညွှန်ကြားချက်သည် ECMAScript ဗားရှင်း 5 တွင် အသစ်ဖြစ်သည် ။
၎င်းသည် ဖော်ပြချက်တစ်ခုမဟုတ်သော်လည်း JavaScript ၏အစောပိုင်းဗားရှင်းများဖြင့် လျစ်လျူရှုထားသော ပကတိအသုံးအနှုန်းတစ်ခုဖြစ်သည်။
ရည်ရွယ်ချက်မှာ "use strict"
ကုဒ်ကို "တင်းကျပ်သောမုဒ်" တွင် လုပ်ဆောင်သင့်သည်ဟု ညွှန်ပြရန်ဖြစ်သည်။
တင်းကျပ်သောမုဒ်ဖြင့်၊ ဥပမာအားဖြင့်၊ သင်သည် မကြေငြာထားသော ကိန်းရှင်များကို အသုံးမပြုနိုင်ပါ။
Internet Explorer 9 နှင့် အောက်ပိုင်းမှလွဲ၍ ခေတ်မီဘရောက်ဆာများအားလုံးသည် "တင်းကျပ်စွာအသုံးပြုရန်" ကို ပံ့ပိုးသည်-
Directive | |||||
---|---|---|---|---|---|
"use strict" | 13.0 | 10.0 | 4.0 | 6.0 | 12.1 |
ဇယားရှိ နံပါတ်များသည် ညွှန်ကြားချက်ကို အပြည့်အဝထောက်ခံသည့် ပထမဆုံးဘရောက်ဆာဗားရှင်းကို သတ်မှတ်ပေးသည်။
သင့်ပရိုဂရမ်အားလုံးတွင် တင်းကျပ်သောမုဒ်ကို သင်သုံးနိုင်သည်။ မကြေငြာထားသော ကိန်းရှင်များကို အသုံးပြုခြင်းမှ ကာကွယ်ခြင်းကဲ့သို့ ပိုမိုသန့်ရှင်းသောကုဒ်ကို ရေးသားရန် ကူညီပေးပါသည်။
"use strict"
စာကြောင်းတစ်ခုမျှသာဖြစ်သည်၊ ထို့ကြောင့် IE 9 သည် ၎င်းကို နားမလည်ပါက အမှားအယွင်းတစ်ခုမျှ မပြုလုပ်နိုင်ပါ။
တင်းကျပ်သောမုဒ်ကို ကြေညာခြင်း။
တင်းကျပ်သောမုဒ်ကို "အသုံးပြုရန် တင်းကျပ်သည်" ကို ထည့်သွင်းခြင်းဖြင့် ကြေညာသည်။ script သို့မဟုတ် function တစ်ခု၏အစသို့။
ဇာတ်ညွှန်းတစ်ခု၏အစတွင် ကြေညာထားပြီး၊ ၎င်းတွင် ဂလိုဘယ်နယ်ပယ်ပါရှိသည် (ဇာတ်ညွှန်းရှိကုဒ်အားလုံးသည် တင်းကျပ်သောမုဒ်တွင် လုပ်ဆောင်ပါမည်-
ဥပမာ
"use strict";
x = 3.14; // This will cause an error
because x is not declared
ဥပမာ
"use strict";
myFunction();
function myFunction() {
y = 3.14; // This will also cause an error
because y is not declared
}
လုပ်ဆောင်ချက်တစ်ခုအတွင်းတွင် ကြေညာထားပြီး၊ ၎င်းတွင် ဒေသန္တရနယ်ပယ်များ ပါ၀င်သည် (လုပ်ဆောင်ချက်အတွင်းရှိ ကုဒ်သည် တင်းကျပ်သောမုဒ်တွင်သာရှိသည်)။
x = 3.14; // This will not cause an error.
myFunction();
function
myFunction() {
"use strict";
y = 3.14; // This will cause an error
}
"တင်းကျပ်သောအသုံးပြုမှု"; အထားအသို
တင်းကျပ်သောမုဒ်ကို ကြေငြာရန်အတွက် syntax ကို JavaScript ဗားရှင်းအဟောင်းများနှင့် တွဲဖက်အသုံးပြုနိုင်ရန် ဒီဇိုင်းထုတ်ထားသည်။
JavaScript ပရိုဂရမ်တစ်ခုတွင် ကိန်းဂဏာန်းအက္ခရာ (4 + 5;) သို့မဟုတ် စာသားစာသား ("ဂျွန်ဒို";) ကို ပြုစုခြင်းသည် ဘေးထွက်ဆိုးကျိုးမရှိပါ။ ၎င်းသည် ရှိပြီးသားမဟုတ်သော ကိန်းရှင်တစ်ခုသို့ ရိုးရှင်းစွာ စုစည်းပြီး သေဆုံးသည်။
ထို့ကြောင့် "use strict";
၎င်း၏အဓိပ္ပါယ်ကို "နားလည်" သော compilers အသစ်များအတွက်သာအရေးကြီးသည်။
ဘာကြောင့် Strict Mode
တင်းကျပ်သောမုဒ်သည် "လုံခြုံသော" JavaScript ကိုရေးရန်ပိုမိုလွယ်ကူစေသည်။
တင်းကျပ်သောမုဒ်ပြောင်းလဲမှုများသည် ယခင်က လက်ခံထားသော "ဆိုးရွားသော အထားအသို" များကို အမှားအယွင်းများအဖြစ်သို့ ပြောင်းလဲခဲ့သည်။
ဥပမာအနေဖြင့်၊ ပုံမှန် JavaScript တွင်၊ ပြောင်းလဲနိုင်သောအမည်တစ်ခုကို လွဲမှားစွာရိုက်ခြင်းသည် ကမ္ဘာလုံးဆိုင်ရာ ပြောင်းလဲသတ်မှတ်မှုအသစ်ကို ဖန်တီးပေးပါသည်။ တင်းကျပ်သောမုဒ်တွင်၊ ၎င်းသည် အမှားအယွင်းတစ်ခုကို ပစ်လွှတ်မည်ဖြစ်ပြီး၊ ကမ္ဘာလုံးဆိုင်ရာကိန်းရှင်တစ်ခုကို မတော်တဆဖန်တီးရန် မဖြစ်နိုင်ပေ။
ပုံမှန် JavaScript တွင်၊ ဆော့ဖ်ဝဲရေးသားသူသည် စာမရေးနိုင်သော ဂုဏ်သတ္တိများအတွက် တန်ဖိုးများကို သတ်မှတ်ပေးသည့် အမှားအယွင်း တုံ့ပြန်ချက်ကို လက်ခံရရှိမည်မဟုတ်ပါ။
တင်းကျပ်သောမုဒ်တွင်၊ စာမရေးနိုင်သောပစ္စည်း၊ ရယူရန်သီးသန့်ပိုင်ဆိုင်မှု၊ ရှိပြီးသားမဟုတ်သောပိုင်ဆိုင်မှု၊ နဂိုမူလပြောင်းလဲနိုင်သော၊ သို့မဟုတ် ရှိနှင့်ခြင်းမရှိသောအရာဝတ္ထုအတွက် assignment တစ်ခုခုသည် အမှားအယွင်းဖြစ်သွားလိမ့်မည်။
တင်းကျပ်သောမုဒ်တွင် ခွင့်မပြုပါ။
ကိန်းရှင်တစ်ခုကို မကြေငြာဘဲ အသုံးပြုခြင်းကို ခွင့်မပြုပါ-
"use strict";
x = 3.14; // This will cause an error
Object များသည် variable များဖြစ်သည်။
အရာဝတ္တုတစ်ခုကို မကြေငြာဘဲ အသုံးပြုခြင်းကို ခွင့်မပြုပါ-
"use strict";
x = {p1:10, p2:20}; // This will cause an error
ပြောင်းလဲနိုင်သော (သို့မဟုတ် အရာဝတ္ထု) ကို ဖျက်ခြင်းအား ခွင့်မပြုပါ။
"use strict";
let x = 3.14;
delete x; // This
will cause an error
လုပ်ဆောင်ချက်ကို ဖျက်ခြင်းအား ခွင့်မပြုပါ။
"use strict";
function x(p1, p2) {};
delete x;
// This will cause an error
ကန့်သတ်ချက်အမည်ကို ပွားခြင်းကို ခွင့်မပြုပါ-
"use strict";
function x(p1, p1) {}; // This will cause an error
Octal ဂဏန်းအက္ခရာများကို ခွင့်မပြုပါ-
"use strict";
let x = 010; // This
will cause an error
Octal Escape စာလုံးများကို ခွင့်မပြုပါ
"use strict";
let x = "\010"; // This will cause an error
ဖတ်ရှုရန်-သီးသန့်ပိုင်ဆိုင်မှုသို့ စာရေးခြင်းကို ခွင့်မပြုပါ-
"use strict";
const obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});
obj.x = 3.14; // This
will cause an error
get-only ပိုင်ဆိုင်မှုသို့ စာရေးခြင်းကို ခွင့်မပြုပါ-
"use strict";
const obj = {get x()
{return 0} };
obj.x = 3.14; // This
will cause an error
မဖျက်နိုင်သော ပစ္စည်းကို ဖျက်ခြင်းအား ခွင့်မပြုပါ-
"use strict";
delete Object.prototype; // This will cause an error
စကားလုံးကို eval
ကိန်းရှင်အဖြစ် အသုံးမပြုနိုင်ပါ။
"use strict";
let eval = 3.14; // This will cause an error
စကားလုံးကို arguments
ကိန်းရှင်အဖြစ် အသုံးမပြုနိုင်ပါ။
"use strict";
let arguments = 3.14; // This will cause an error
ထုတ်ပြန်ချက်ကို with
ခွင့်မပြုပါ-
"use strict";
with (Math){x = cos(2)}; // This will cause an error
လုံခြုံရေးအရ၊ eval()
၎င်းကို ခေါ်သည့် နယ်ပယ်တွင် ကိန်းရှင်များကို ဖန်တီးခွင့်မပြုပါ-
"use strict";
eval ("let x = 2");
alert (x); // This
will cause an error
လုပ်ဆောင်ချက်များ ရှိ this
သော့ချက်စကားလုံးသည် တင်းကျပ်သောမုဒ်တွင် ကွဲပြားစွာပြုမူသည်။
this
သော့ချက်စကားလုံးသည် function ဟုခေါ်သော အရာဝတ္ထုကို ရည်ညွှန်းသည် ။
အရာဝတ္တုအား မသတ်မှတ်ထားပါက၊ တင်းကျပ်သောမုဒ်တွင် undefined
လုပ်ဆောင်ချက်များ ပြန်ပေါ်လာမည်ဖြစ်ပြီး ပုံမှန်မုဒ်တွင် လုပ်ဆောင်ချက်များသည် ကမ္ဘာလုံးဆိုင်ရာအရာဝတ္တု (window) ကို ပြန်ပေးလိမ့်မည်-
"use strict";
function myFunction() {
alert(this); // will alert "undefined"
}
myFunction();
အနာဂတ်သက်သေ။
အနာဂတ် JavaScript ဗားရှင်းများအတွက် သီးသန့်သော့ချက်စာလုံးများကို တင်းကျပ်သောမုဒ်တွင် ပြောင်းလဲနိုင်သောအမည်များအဖြစ် အသုံးမပြုနိုင်ပါ။
ဤအရာများသည်:
- အသုံးအဆောင်များ
- အင်တာဖေ့စ်
- ထားပါတော့
- အထုပ်
- သီးသန့်
- ကာကွယ်ထားသည်။
- အများသူငှာ
- အငြိမ်
- အသားပေး
"use strict";
let public = 1500; // This will cause an error
သတိထားပါ!
"တင်းကျပ်သောအသုံးပြုမှု" ညွှန်ကြားချက် ကို script သို့မဟုတ် function တစ်ခု၏ အစ တွင်သာအသိအမှတ်ပြုသည် ။