javascript - ไม่แนะนำให้ใช้ "use strict" ใน ES6?
ฉันยังไม่คุ้นเคยกับ ECMAScript 6 เลย ฉันเพิ่งก็อปปี้รีโป React Starter Kit ซึ่งใช้ ES6 สำหรับโค้ดแอปพลิเคชัน ฉันประหลาดใจที่เห็นว่าตัวลินเตอร์ถูกตั้งค่าให้ห้ามการใช้ไดเรกทีฟ use strict ซึ่งฉันคิดว่าน่าจะเป็นสิ่งที่แนะนำใน JavaScript ก่อน ES6 แล้วจุดประสงค์คืออะไร?
คำตอบ #1
โมดูล ES6 อยู่ในโหมดเข้มงวดเสมอ เพื่ออ้างอิงส่วนที่เกี่ยวข้องของข้อกำหนด:
10.2.1 โค้ดโหมดเข้มงวด
หน่วยไวยากรณ์ของสคริปต์ ECMAScript อาจถูกประมวลผลโดยใช้ไวยากรณ์และความหมายทั้งแบบไม่มีข้อจำกัดหรือแบบเข้มงวด โค้ดจะถูกตีความเป็นโค้ดในโหมดเข้มงวดในสถานการณ์ดังต่อไปนี้:
- โค้ดระดับโลกถือเป็นโค้ดโหมดเข้มงวดถ้ามันเริ่มต้นด้วยบรรทัดคำสั่ง (Directive Prologue) ที่มีคำสั่งใช้เข้มงวด (Use Strict Directive) (ดู 14.1.1)
- รหัสโมดูลมักจะเป็นรหัสโหมดเข้มงวดเสมอ
- ทุกส่วนของ ClassDeclaration หรือ ClassExpression เป็นโค้ดโหมดเข้มงวด
- โค้ด Eval เป็นโค้ดโหมดเข้มงวดหากเริ่มต้นด้วย Directive Prologue ที่มี Use Strict Directive หรือหากการเรียกใช้ eval เป็นการ eval โดยตรง (ดู 12.3.4.1) ซึ่งอยู่ในโค้ดโหมดเข้มงวด
- รหัสฟังก์ชันเป็นรหัสโหมดเข้มงวดหาก FunctionDeclaration, FunctionExpression, GeneratorDeclaration, GeneratorExpression, MethodDefinition หรือ ArrowFunction ที่เกี่ยวข้องอยู่ในรหัสโหมดเข้มงวด หรือหากรหัสที่สร้างค่าของช่องภายใน [[ECMAScriptCode]] ของฟังก์ชันเริ่มต้นด้วย Directive Prologue ที่มี Use Strict Directive
- โค้ดฟังก์ชันที่ถูกส่งเป็นอาร์กิวเมนต์ให้กับคอนสตรัคเตอร์ Function และ Generator ภายในจะเป็นโค้ดในโหมดเข้มงวด หากอาร์กิวเมนต์ตัวสุดท้ายเป็นสตริง ซึ่งเมื่อประมวลผลแล้วจะเป็น FunctionBody ที่เริ่มต้นด้วย Directive Prologue ที่มีคำสั่ง Use Strict