JavaScript strict mode
- ບ່ອນໜ້າຫນ້າທີ່ໜ້າຫນ້າຫລັງ JS Hoisting
- ບ່ອນໜ້າຫນ້າທີ່ໜ້າຫນ້າຫລັງ JS this ຄຳປະກອບ
"use strict";
ການກໍານົດວິທີ JavaScript ຄວນດຳເນີນໃນ "strict mode".
ຄຳສັ່ງ "use strict"
"use strict"
ແມ່ນຄຳສັ່ງໃຫມ່ໃນ JavaScript 1.8.5 (ECMAScript version 5).
ມັນບໍ່ແມ່ນຄຳສັ່ງຫຍັງຫຼັງຈາກນັ້ນມັນແມ່ນຄຳຂອງຄຳຂັດແຍ່ງ, ກຳນົດຂອງ JavaScript ສະບັບເກົ່າຈະບໍ່ມີຄວາມຄິດມັນ.
"use strict";
ຄວາມຄົງຄວາມຄິດຂອງມັນແມ່ນສະແດງວ່າວິທີ JavaScript ຄວນດຳເນີນໃນ "strict mode".
ໃນວິທີ "strict" ທ່ານບໍ່ສາມາດ, ເອງນັ້ນ, ນຳໃຊ້ຈຳນວນທີ່ບໍ່ຖືກປະກາດ.
ສະບັບພາຍໃນຂອງບົດສະຫຼັດທີ່ສະບັບບັດເດດໄດ້ສະບັບວິທີ "strict":
- IE ສະບັບ 10 ຕໍ່ມາ
- Firefox ສະບັບ 4 ຕໍ່ມາ
- Chrome ສະບັບ 13 ຕໍ່ມາ
- Safari ສະບັບ 5.1 ຕໍ່ມາ
- ສະບັບ Opera ສະບັບ 12 ຕໍ່ມາ
ການປະກາດວິທີ "strict"
ການເພີ່ມ "use strict";
ການປະກາດວິທີ "strict".
ການປະກາດວິທີ "strict" ໃນຫົວໜ້າບົດສະຫຼັດ (ທຸກການລະບຽບໃນບົດສະຫຼັດຈະດຳເນີນໃນວິທີ "strict"):
ຄວາມຄົງຄວາມຄິດ
"use strict"; x = 3.14; // ຈະເປັນຜົນກະທົບການຂັດຕະວິດ ຍ້ອນ x ຍັງບໍ່ຖືກປະກາດ
ຄວາມຄົງຄວາມຄິດ
"use strict"; myFunction(); function myFunction() { y = 3.14; // ຈະເປັນຜົນກະທົບການຂັດຕະວິດ ຍ້ອນ y ຍັງບໍ່ຖືກປະກາດ }
ການປະກາດວິທີ "strict" ໃນພາກສ່ວນຫຼັງການການປະກາດ (ພຽງແຕ່ການລະບຽບທີ່ໃນພາກສ່ວນຫຼັງການປະກາດຈະດຳເນີນໃນວິທີ "strict"):
x = 3.14; // ຈະບໍ່ເປັນຜົນກະທົບການຂັດຕະວິດ myFunction(); function myFunction() { "use strict"; y = 3.14; // ຈະເປັນຜົນກະທົບການຂັດຕະວິດ }
"use strict"; ວິທີ
ສັນຍາກົດລະບຽບຂອງວິທີ "strict" ໄດ້ຖືກອອກແບບເພື່ອການຮັບຮອງກັບເກົ່າກຳນົດຂອງ JavaScript.
ການຮ່າງການຂອງຈຳນວນຂອງ JavaScript ທີ່ເປັນຄຳຂັດແຍ່ງ (ອີງຕາມ 4+5) ຫຼື ຄຳຂັດແຍ່ງ ("Bill Gates") ຈະບໍ່ມີຜົນດັງລົບ. ມັນຈະຮ່າງການສະຖານະປະກອບທີ່ບໍ່ມີຊື່ຫຼັງຈາກນັ້ນຈະຫາຍຫາຍ.
所有 "use strict";
只会对“理解”其含义的新编译器产生影响。
为什么使用严格模式?
严格模式使我们更容易编写“安全的” JavaScript。
严格模式把之前可接受的“坏语法”转变为真实的错误。
ໃນ JavaScript ບໍ່ລະມັດ,ຖ້າຈະຂຽນຊື່ຄວາມປະສົງຜິດຫົວຂໍ້ຈະເປັນການສົ່ງຄວາມຜິດພາດໃນການໃຊ້ບໍ່ລະມັດຫຼືຈະບໍ່ສາມາດສ້າງຄວາມປະສົງທົ່ວໄປຫຼືວັດຖຸທົ່ວໄປຫຼືວັດຖຸທົ່ວໄປ.
ໃນ 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)}; // ຈະເປັນການສ້າງຄວາມຜິດພາດ
ບໍ່ອະນຸຍາດທີ່ໃຊ້ຄຳສັ່ງ with ສຳລັບຄວາມປອດໄພ: eval()
ທີ່ຖືກເລືອກວັດຖຸພາຍໃນຂອງການເລືອກວັດຖຸທີ່ຖືກເລືອກ:
"use strict"; eval ("var x = 2"); alert (x); // ຈະເປັນການສ້າງຄວາມຜິດພາດ
ໃນການເກີດການເລືອກວັດຖຸພາຍໃນການເລືອກວັດຖຸ f() ຄຳປະກອບ this ແມ່ນເປັນວັດຖຸໂລກ. ໃນການໃຊ້ຮູບແບບ strict, ມັນໄດ້ກາຍເປັນ: undefined
.
ການກຳນົດຄວາມຄົງອານຸສັນ
ບໍ່ອະນຸຍາດທີ່ຈະໃຊ້ຄຳປະກອບທີ່ນັບເບື້ອງຕໍ່ອະນາຄົດ. ພວກມັນແມ່ນ:
- implements
- interface
- let
- package
- private
- protected
- public
- static
- yield
"use strict"; var public = 1500; // ຈະເປັນການສ້າງຄວາມຜິດພາດ
ການເຕືອນ
"use strict"
ຄຳສັ່ງພຽງແຕ່ຂັ້ນສັ່ງຫນຶ່ງຫນຶ່ງຫນຶ່ງຫນຶ່ງຫນຶ່ງຕົ້ນໄດ້ຖືກຮັບຮູ້.
- ບ່ອນໜ້າຫນ້າທີ່ໜ້າຫນ້າຫລັງ JS Hoisting
- ບ່ອນໜ້າຫນ້າທີ່ໜ້າຫນ້າຫລັງ JS this ຄຳປະກອບ