"use strict" เป็นคำสั่งสั่งงาน (directive) ที่เป็นลิเทอรัล (literal expression) เปิดตัวใน JavaScript 1.8.5 (ES5) ตามชื่อที่บ่งชี้ "use strict" ระบุว่าโค้ดจะถูกexecute ในโหมดเข้มงวด (strict mode) ส่วนโหมดไม่เข้มงวด (non-strict mode) หรือที่เรียกว่า "sloppy mode" จะไม่บังคับกฎเข้มงวดเหล่านี้
การประกาศ Strict Mode
เพื่อเปิดใช้งาน ให้เพิ่มคำสั่ง "use strict" ไว้บนสุดของสคริปต์ (สำหรับขอบเขตทั่วไป) หรือบนสุดของฟังก์ชัน (สำหรับขอบเขตฟังก์ชัน)
<!DOCTYPE html>
<html>
<body>
<p>จะเกิด Error เนื่องจากใช้ตัวแปรโดยไม่ได้ประกาศ</p>
<p>กด F12 เพื่อดู Error ใน Console</p>
<script>
"use strict";
a = 1; // ReferenceError: a is not defined
</script>
</body>
</html>
ความแตกต่างหลัก
- ตัวแปร: Strict mode ห้ามใช้ตัวแปรโดยไม่ประกาศ (non-strict จะสร้าง global variable อัตโนมัติ)
- this: ใน strict mode
thisจะเป็นundefinedในฟังก์ชันทั่วไป (non-strict จะเป็น global object) - คำสงวน: Strict mode จำกัดการใช้คำสงวนอนาคต เช่น
implements,interface,packageฯลฯ - Octal literals: ห้ามใช้เลขฐานแปดแบบเก่า (เช่น
010) - Duplicate parameters: ห้ามมีพารามิเตอร์ซ้ำในฟังก์ชัน
ข้อแนะนำ: ควรใช้ "use strict" เสมอในโค้ดสมัยใหม่ เพื่อป้องกันบั๊กและทำให้โค้ดปลอดภัยกว่า