Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ความแตกต่างระหว่าง Strict Mode และ Non-Strict Mode ใน JavaScript

"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" เสมอในโค้ดสมัยใหม่ เพื่อป้องกันบั๊กและทำให้โค้ดปลอดภัยกว่า