`strict mode` ใน JavaScript

`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 ด้วย

YouTube Video