`strict mode` ใน JavaScript
บทความนี้อธิบายเกี่ยวกับ strict mode
ใน JavaScript
YouTube Video
strict mode
ใน JavaScript
ใน JavaScript, strict mode
เป็นคุณสมบัติที่ถูกแนะนำใน ECMAScript 5 (ES5) เพื่อทำให้โค้ดปลอดภัยขึ้นและป้องกันข้อผิดพลาด ด้วยการใช้ strict mode, การใช้ไวยากรณ์บางอย่างที่ยืดหยุ่นมากเกินไปและคุณสมบัติที่อาจมีความเสี่ยงจะถูกปิดใช้งาน และจะมีการตรวจสอบข้อผิดพลาดที่เข้มงวดขึ้น สิ่งนี้ช่วยให้นักพัฒนาสามารถหลีกเลี่ยงพฤติกรรมที่คาดไม่ถึงและเขียนโค้ดที่มีความแข็งแกร่งและประสิทธิภาพสูงมากขึ้น
การเปิดใช้งาน strict mode
เพื่อเปิดใช้งานโหมด strict mode
ให้เพิ่มคำสั่งต่อไปนี้ที่จุดเริ่มต้นของโค้ดของคุณ
1"use strict";
คำประกาศนี้สามารถนำไปใช้ได้ทั้งสคริปต์ทั้งหมดหรือในระดับฟังก์ชันเป็นรายตัว ตัวอย่างเช่น หากนำไปใช้กับสคริปต์ทั้งหมด คุณสามารถเขียนได้ดังนี้:
1"use strict";
2
3function example() {
4 // Strict mode is applied
5}
หากนำไปใช้กับแต่ละฟังก์ชัน คุณสามารถเขียนได้ดังนี้:
1function example() {
2 "use strict";
3 // Strict mode is applied only within this function
4}
strict mode
ใช้กับแต่ละสโคป ดังนั้นมันสามารถเปิดใช้งานภายในฟังก์ชันได้ นอกจากนี้ เนื่องจาก strict mode
ถูกเปิดใช้งานโดยค่าเริ่มต้นในโมดูลแล้ว คุณจึงไม่จำเป็นต้องประกาศใช้งานแบบแยกภายในโมดูล
คุณสมบัติที่สำคัญและความแตกต่างของ strict mode
การใช้ strict mode
จะเปลี่ยนพฤติกรรมเริ่มต้นบางประการของ JavaScript นี่คือตัวอย่างหลัก
การห้ามตัวแปรแบบ global ที่เกิดขึ้นโดยไม่ได้ตั้งใจ
ใน JavaScript ทั่วไป หากละเว้นการประกาศตัวแปร จะมีการกำหนดให้เป็นตัวแปรแบบ global โดยอัตโนมัติ แต่ใน strict mode
สิ่งนี้จะทำให้เกิดข้อผิดพลาด
1"use strict";
2
3x = 10; // Error: x is not defined
ตัวแปรจะต้องถูกประกาศเสมอด้วย var
, let
, หรือ const
ข้อจำกัดในการใช้คำสงวน
คีย์เวิร์ดในอนาคตของ JavaScript (เช่น implements
, interface
, package
, เป็นต้น) ไม่สามารถนำมาใช้เป็นชื่อตัวแปรหรือฟังก์ชันใน strict mode
1"use strict";
2
3var package = "strict mode"; // Error: Unexpected strict mode reserved word
การเปลี่ยนแปลงในพฤติกรรมของ this
ในโหมดปกติ this
ภายในฟังก์ชันจะอ้างถึงวัตถุ global (เช่น window
ในเบราว์เซอร์) แต่ใน strict mode
ค่าของ this
จะเป็น undefined
1"use strict";
2
3function example() {
4 console.log(this); // undefined
5}
6
7example();
สิ่งนี้ช่วยป้องกันข้อผิดพลาดที่เกิดจากการใช้ this
อย่างไม่ถูกต้อง
การห้ามการลบคุณสมบัติที่ไม่สามารถลบได้
ในโหมดปกติ การพยายามลบคุณสมบัติของอ็อบเจกต์ที่ไม่สามารถลบได้จะถูกละเลยโดยไม่มีข้อผิดพลาด แต่ใน strict mode
จะเกิดข้อผิดพลาดขึ้น
1"use strict";
2
3var obj = Object.freeze({name: "John"});
4delete obj.name; // Error: Cannot delete property 'name'
การห้ามใช้ชื่อพารามิเตอร์ซ้ำกัน
ในโหมดปกติ การประกาศพารามิเตอร์ที่มีชื่อเดียวกันหลายครั้งเป็นสิ่งที่ทำได้ แต่ใน strict mode
จะทำให้เกิดข้อผิดพลาด
1"use strict";
2
3function example(a, a) {
4 // Error: Duplicate parameter name not allowed in this context
5}
ข้อห้ามของคำสั่ง with
คำสั่ง with
สามารถลดความสามารถในการอ่านโค้ดและไม่ได้รับอนุญาตใน strict mode
1"use strict";
2
3with (Math) {
4 // Error: Strict mode code may not include a with statement
5}
ข้อดีของ strict mode
strict mode
ช่วยเพิ่มความปลอดภัยและประสิทธิภาพของโค้ดในหลายๆ ด้าน
การตรวจจับข้อผิดพลาดที่ดีขึ้น
ใน strict mode
ข้อผิดพลาดที่มักถูกมองข้ามในโหมดปกติจะถูกตรวจพบ ทำให้นักพัฒนาสามารถแก้ไขข้อผิดพลาดที่อาจเกิดขึ้นได้เร็วขึ้น ตัวอย่างเช่น มันป้องกันการสร้างตัวแปรโกลบอลโดยไม่ได้ตั้งใจและการใช้คำสงวนผิดวิธี
ประสิทธิภาพที่ดีขึ้น
ใน strict mode
เอนจิน JavaScript สามารถปรับปรุงประสิทธิภาพการทำงานของโค้ดได้ดียิ่งขึ้น ส่งผลให้ความเร็วในการประมวลผลอาจเพิ่มขึ้น
ความปลอดภัยของโค้ดที่ดีขึ้น
การจัดการ this
จะมีความเข้มงวดมากขึ้น ป้องกันการเข้าถึงออบเจ็กต์โกลบอลที่ไม่จำเป็น ซึ่งช่วยเพิ่มความปลอดภัยของโค้ด นอกจากนี้ การจำกัดการใช้คำสงวนยังช่วยหลีกเลี่ยงความขัดแย้งกับคำสำคัญในอนาคต
ความเข้ากันได้และสิ่งที่ควรพิจารณา
strict mode
ถูกแนะนำใน ECMAScript 5 และไม่รองรับในเบราว์เซอร์ที่ปล่อยออกมาก่อนหน้านั้น อย่างไรก็ตาม การเปิดใช้งาน strict mode
จะถูกละเลยโดยเบราว์เซอร์ที่ไม่รองรับโดยที่สคริปต์ไม่เสียหาย ดังนั้น โดยปกติแล้ว สามารถใช้งานได้อย่างปลอดภัย
เมื่อมีการนำ strict mode
มาใช้กับโปรเจกต์ขนาดใหญ่ที่มีอยู่แล้ว การทดสอบอย่างรอบคอบเป็นสิ่งสำคัญเพื่อหลีกเลี่ยงข้อผิดพลาดที่ไม่คาดคิด
สรุป
strict mode
ใน JavaScript เป็นฟีเจอร์ที่มีประโยชน์มากสำหรับการปรับปรุงคุณภาพของโค้ด โดยเฉพาะอย่างยิ่งสำหรับโครงการขนาดใหญ่หรือการพัฒนาแบบทีม แนะนำให้ใช้โหมดเข้มงวดอย่างจริงจังเพื่อป้องกันบั๊กและข้อผิดพลาดที่ไม่คาดคิด รวมถึงเพิ่มความสามารถในการอ่านโค้ดและการบำรุงรักษา
การทำความเข้าใจและใช้งาน strict mode
อย่างเหมาะสมช่วยหลีกเลี่ยงปัญหาใน JavaScript และช่วยให้การพัฒนามีความปลอดภัยและมีประสิทธิภาพมากขึ้น
คุณสามารถติดตามบทความข้างต้นโดยใช้ Visual Studio Code บนช่อง YouTube ของเรา กรุณาตรวจสอบช่อง YouTube ด้วย