JavaScript strict mode
- ပြင်ဘက် JS အဆက်အသွယ်
- နောက်ပိုင်း JS this အကြောင်း
"use strict";
JavaScript စကားရပ် ကို "strict mode" ဖြင့် လက်ခံရမည် ဟု ကြောင်းပြုသည်။
"use strict" အမှုန့်
"use strict"
သည် ECMAScript version 5 တွင် JavaScript 1.8.5 မှ အသစ် ပြောင်းလုပ်ကူးခဲ့သော အမှုန့်ဖြစ်သည်။
သည် အရာတစ်ခု မဟုတ် အသံအချင်း စကားရပ် ဖြစ်ပြီး အရှိန်ကျသော JavaScript အစိတ်အပိုင်း များ မပြောင်းလဲစေပေ။
"use strict";
သည် JavaScript စကားရပ် ကို "strict mode" ဖြင့် လက်ခံရမည် ဟု ညွှန်ပြခြင်းဖြစ်သည်။
strict mode တွင် ကျွန်ုပ်သည် အမှုန့်ကို မပြောင်းလုပ်ကူးနိုင် မဟုတ် အခြား အမှုန့် မရှိသေးသော အမှုန့် အသုံးပြုနိုင် မဟုတ်
strict mode ကို ပြောင်းလုပ်ကူးသော အခြား ဘာသာစကား ကွန်ပျူတာ ဘာသာစကား
- version 10 နှင့် နောက်ဆုံး အားလုံး IE
- version 4 နှင့် နောက်ဆုံး အားလုံး Firefox
- version 13 နှင့် နောက်ဆုံး အားလုံး Chrome
- version 5.1 နှင့် နောက်ဆုံး အားလုံး Safari
- version 12 နှင့် နောက်ဆုံး အားလုံး Opera
strict mode ကို ပြောင်းလုပ်ကူး
script သို့မဟုတ် function အစက်အကျယ် အစိတ်အပိုင်း ပြောင်းလုပ်ကူးရန် "use strict";
strict mode ကို ပြောင်းလုပ်ကူးရန်
strict mode ကို အစက်အကျယ် ပြောင်းလုပ်ကူးသည် အနက် လက်လျှံအား (strict mode) နှင့် နောက်ဆုံး လက်လျှံအား ပြောင်းလဲစေသည်။
အကျိုးသမား
"use strict"; x = 3.14; // အကျဥ်းမရှိသေးသော အမှား သို့မဟုတ် x က မည်သည့် ကြောင့် မပြောင်းလဲစေ
အကျိုးသမား
"use strict"; myFunction(); function myFunction() { y = 3.14; // အကျဥ်းမရှိသေးသော အမှား သို့မဟုတ် y က မည်သည့် ကြောင့် မပြောင်းလဲစေ }
strict mode ကို ပုံစံတစ်ခု တွင် ကိုယ်စားပြုလုပ်သည် အနက် လက်လျှံအား (strict mode) နှင့် နောက်ဆုံး လက်လျှံအား ပြောင်းလဲစေသည်။
x = 3.14; // အကျဥ်းမရှိသေးသော အမှား myFunction(); function myFunction() { "use strict"; y = 3.14; // အကျဥ်းမရှိသေးသော အမှား }
"use strict"; လိုက်နက်နာ
strict mode လိုက်နက်နာထားသည် အရှိန်ကျသော JavaScript အစိတ်အပိုင်းများနှင့် အညီအညွတ်ဖြစ်စေရန် ဖွဲ့စည်းပုံခံခဲ့သည်။
ကိုယ်စားပြုလုပ်သော JavaScript ပြောက်လုပ်စား စကားရပ် (ဥပမာ 4+5) သို့မဟုတ် စကားလုံး ("Bill Gates") သည် အကျဥ်းမရှိပေ။ အထူးသဖြင့် သူတို့သည် ဘယ်အရာမှ မရှိသေးသော အမှုန့်ကို ပြောင်းလဲစေ၍ နှင်းသွားသည်။
所有 "use strict";
只会对“理解”其含义的新编译器产生影响。
为什么使用严格模式?
严格模式使我们更容易编写“安全的” JavaScript。
严格模式把之前可接受的“坏语法”转变为真实的错误。
举例来说,在普通的 JavaScript 中,错打变量名会创建新的全局变量。在严格模式中,此举将抛出错误,这样就不可能意外创建全局变量。
အကျဉ်းချုပ် အခြေခံ အချက်အလက် တွင် မဖြိုဖျတ်နိုင်သော အချက်အလက် ကို သုံးလိုက်ရန် အပြီးသတ် မရှိ
အကျဉ်းချုပ် အခြေခံ အချက်အလက် တွင် မဖြိုဖျတ်နိုင်သော အချက်အလက် သို့မဟုတ် မရှိသေးသော သတင်း သို့မဟုတ် အရာဝတ္တု ကို သုံးလိုက်ရန် ပြင်းပြင်းထန်ထန် အမှား ဖြစ်လိမ့်မည်
အကျဉ်းချုပ် အခြေခံ အချက်အလက်
သတင်း ကို ကြေညာခြင်း မရှိသေးသော အခါ သတင်း ကို သုံးလိုက်ရန် မလုပ်နိုင်
"use strict"; x = 3.14; // အမှား ဖြစ်လိမ့်မည်
အရာဝတ္တု လည်း သတင်း
အရာဝတ္တု ကို ကြေညာခြင်း မရှိသေးသော အခါ အရာဝတ္တု ကို သုံးလိုက်ရန် မလုပ်နိုင်
"use strict"; x = {p1:10, p2:20}; // အမှား ဖြစ်လိမ့်မည်
သတင်း (သို့) အရာဝတ္တု ကို ဖျတ်သိမ်းရန် မလုပ်နိုင်
"use strict"; var x = 3.14; delete x; // အမှား ဖြစ်လိမ့်မည်
အကြောင်းအရာ ကို ဖျတ်သိမ်းရန် မလုပ်နိုင်
"use strict"; function x(p1, p2) {}; delete x; // အမှား ဖြစ်လိမ့်မည်
ပြဿနာ အကြောင်းအရာ ပြတ်သတ်
"use strict"; function x(p1, p1) {}; // အမှား ဖြစ်လိမ့်မည်
နိုင်ငံခြား စက္ခု ကို သုံးလိုက်ရန် မလုပ်နိုင်
"use strict"; var x = 010; // အမှား ဖြစ်လိမ့်မည်
လိုင်းစာစက္ခု ကို သုံးလိုက်ရန် မလုပ်နိုင်
"use strict"; var x = \010; // အမှား ဖြစ်လိမ့်မည်
နိုင်ငံခြား အချက်အလက် ကို သုံးလိုက်ရန် မလုပ်နိုင်
"use strict"; var obj = {}; Object.defineProperty(obj, "x", {value:0, writable:false}); obj.x = 3.14; // အမှား ဖြစ်လိမ့်မည်
နိုင်ငံခြား အချက်အလက် ကို သုံးလိုက်ရန် မလုပ်နိုင်
"use strict"; var obj = {get x() {return 0} }; obj.x = 3.14; // အမှား ဖြစ်လိမ့်မည်
မဖြိုဖျတ်နိုင်သော အချက်အလက် ကို ဖျတ်သိမ်းရန် မလုပ်နိုင်
"use strict"; delete Object.prototype; // အမှား ဖြစ်လိမ့်မည်
စကားလုံး "eval" ကို သတင်းကို သုံးလိုက်ရန် မလုပ်နိုင်
"use strict"; var eval = 3.14; // အမှား ဖြစ်လိမ့်မည်
စကားလုံး "arguments" ကို သတင်းကို သုံးလိုက်ရန် မလုပ်နိုင်
"use strict"; var arguments = 3.14; // 这将引发错误
with
语句是不允许的:
"use strict"; with (Math){x = cos(2)}; // 这将引发错误
处于安全考虑,不允许 eval()
在其被调用的作用域中创建变量:
"use strict"; eval ("var x = 2"); alert (x); // 这将引发错误
在类似 f() 的函数调用中,this 的值是全局对象。在严格模式中,现在它成为了 undefined
。
အိမ်ခြေချရ ကတ္တရား
အလိုအား အိမ်ခြေချရ ဖြစ်သော အကြောင်းရပ် ကို ပုံမှန် အစိုးရ တွင် အသုံးမပြုနိုင်ပါ။ သို့သော် အလိုအား အိမ်ခြေချရ ဖြစ်သော အကြောင်းရပ် များမှာ :
- implements
- interface
- let
- package
- private
- protected
- public
- static
- yield
"use strict"; var public = 1500; // ဒါက အမှား ဖြစ်ပါ
အောင်မြင်ခြင်း
"use strict"
အမိန့် သည် စကာတင် သို့မဟုတ် ဘက်တွက်ချက် တွင် သာ အသုံးပြုနိုင်စတင်ကြီးစိုးခဲ့
- ပြင်ဘက် JS အဆက်အသွယ်
- နောက်ပိုင်း JS this အကြောင်း