การแทรกอัฒภาคอัตโนมัติของ JavaScript (ASI) คือการแทรกอัฒภาคที่ขาดหายไป ข้อความต่อไปนี้ได้รับผลกระทบจากการแทรกอัฒภาคอัตโนมัติ -
empty statement var statement expression statement do-while statement continue statement break statement return statement throw statement
กฎอยู่ในข้อกำหนดดังต่อไปนี้ -
- เมื่อแยกวิเคราะห์สคริปต์หรือโมดูลจากซ้ายไปขวา:พบโทเค็นที่ไม่อนุญาตโดยการผลิตไวยากรณ์ใดๆ เครื่องหมายอัฒภาคจะถูกแทรกโดยอัตโนมัติก่อนโทเค็นที่ละเมิดต่อเมื่อมีสิ่งใดสิ่งหนึ่งต่อไปนี้ เงื่อนไขกลายเป็นจริง -
- โทเค็นที่ละเมิดคือ }.
- โทเค็นก่อนหน้าคือ ) จากนั้นเครื่องหมายอัฒภาคที่แทรกจะถูกแยกวิเคราะห์เป็นเครื่องหมายอัฒภาคที่สิ้นสุดของคำสั่ง do-while (13.7.2)
- พบจุดสิ้นสุดของอินพุตสตรีมของโทเค็น ดังนั้น parser จึงไม่สามารถแยกวิเคราะห์สตรีมโทเค็นอินพุตเป็น ECMAScript หรือโมดูลที่สมบูรณ์หนึ่งรายการ จากนั้นเครื่องหมายอัฒภาคจะถูกแทรกโดยอัตโนมัติ
- พบโทเค็นที่ได้รับอนุญาตโดยการผลิตไวยากรณ์บางส่วน แต่การผลิตเป็นการผลิตที่จำกัด และโทเค็นจะเป็นโทเค็นแรกสำหรับเทอร์มินัลหรือไม่ใช่เทอร์มินัลทันทีตามคำอธิบายประกอบ