- ECMAScript 2025 ได้รับการอนุมัติเป็นมาตรฐานอย่างเป็นทางการเมื่อวันที่ 25 มิถุนายน 2025 พร้อมเพิ่ม ฟีเจอร์ใหม่ หลากหลายรายการ
- ปรับปรุงวิธีการนำเข้าทรัพยากรที่ไม่ใช่ JavaScript ผ่าน Import attributes และ JSON modules
- Iterator helper methods ช่วยเพิ่มประสิทธิภาพในการจัดการข้อมูลขนาดใหญ่และงานวนซ้ำหลากหลายรูปแบบ
- มีการเพิ่มเมธอดใหม่จำนวนมากให้กับอ็อบเจ็กต์ built-in หลักอย่าง Set และ RegExp เพื่อให้ใช้งานได้สะดวกยิ่งขึ้น
- รองรับ เลขทศนิยมลอยตัว 16 บิต (float16) ช่วยขยายทั้งประสิทธิภาพและความยืดหยุ่นในการจัดการข้อมูล
การอนุมัติอย่างเป็นทางการของ ECMAScript 2025
- เมื่อวันที่ 25 มิถุนายน 2025 ในการประชุมใหญ่ครั้งที่ 129 ของ Ecma International ได้อนุมัติ ECMAScript 2025 เป็นมาตรฐานอย่างเป็นทางการ
ฟีเจอร์ใหม่ที่สำคัญ
Import attributes และ JSON modules
- Import attributes เป็นไวยากรณ์ที่ใช้ระบุแอตทริบิวต์ เช่น type สำหรับอาร์ติแฟกต์ที่ไม่ใช่ JavaScript (ทรัพยากรเป้าหมายของ import)
- รองรับ JSON modules อย่างเป็นทางการเป็นครั้งแรก ทำให้สามารถโหลดข้อมูล JSON ได้สะดวกในรูปแบบ
import configData from './data.json' with { type: 'json' };
- สามารถระบุแอตทริบิวต์แบบเดียวกันได้กับ dynamic import (
import() call) เช่นกัน
Iterator helper methods
- มีการเพิ่ม helper methods หลากหลายแบบที่คล้ายกับเมธอดของ Array แต่ปรับมาเฉพาะสำหรับ iterator
- เมธอดที่มีอยู่แล้ว เช่น
filter, map, flatMap, some, every, find, reduce, forEach
- รวมถึงเมธอดใหม่สำหรับ iterator โดยเฉพาะ เช่น
drop, take, toArray
- สามารถใช้งานได้โดยตรงกับ iterable objects ทุกชนิด เช่น Set, Map
- ประมวลผลข้อมูลตามลำดับเท่าที่จำเป็นโดยไม่ต้องสร้างอาร์เรย์กลาง จึงเหมาะกับ ข้อมูลขนาดใหญ่
การขยายเมธอดของ Set
- เพิ่มเมธอดสำหรับการดำเนินการ union, intersection, difference และ symmetric difference
Set.prototype.union(other), intersection(other), difference(other), symmetricDifference(other)
- มีเมธอดสำหรับตรวจสอบ subset/superset/disjoint
isSubsetOf(other), isSupersetOf(other), isDisjointFrom(other)
การปรับปรุง regular expression
RegExp.escape()
- เพิ่ม
RegExp.escape() สำหรับ escape สตริงใดๆ โดยอัตโนมัติ เพื่อให้สามารถ ใช้งานใน regular expression ได้อย่างปลอดภัย
Inline flags ภายในแพตเทิร์น
- สามารถใช้ แฟลกเฉพาะจุด (
i, u เป็นต้น) กับเพียงบางส่วนของแพตเทิร์นใน regular expression ได้
- ตัวอย่าง:
/^x(?i:HELLO)x$/ จะจับคู่แบบไม่แยกตัวพิมพ์เล็ก-ใหญ่เฉพาะส่วน HELLO
รองรับ capture group ชื่อซ้ำ
- สามารถใช้ capture group ที่มีชื่อเดียวกันได้ในแต่ละทางเลือก (branch) ของ regular expression
- ตัวอย่าง:
/(?<chars>a+)|(?<chars>b+)/v
Promise.try()
- เพิ่ม
Promise.try() ซึ่งช่วยให้เริ่มต้นการจัดการ โค้ดแบบ synchronous/asynchronous ผสมกัน ได้ภายใต้ Promise chain เดียว
- เดิมการจัดการ synchronous exception ทำได้ค่อนข้างยุ่งยาก แต่ตอนนี้เขียนได้กระชับขึ้น
รองรับเลขทศนิยมลอยตัว 16 บิต (float16)
- ใช้
Math.f16round() เพื่อปัดเศษเลขทศนิยมลอยตัว 16 บิตได้
- เพิ่มชนิด
Float16Array ให้กับ TypedArray
- เพิ่มเมธอด
getFloat16() และ setFloat16() ให้กับ DataView
เอกสารอ้างอิงและหนังสือฟรี
- มีหนังสือออนไลน์ฟรี “Exploring JavaScript (ES2025 Edition)” ให้ใช้งาน
- อธิบายรายละเอียดเกี่ยวกับประวัติและพัฒนาการของ JavaScript รวมถึงฟีเจอร์ใหม่ของ ECMAScript
- มีตัวอย่างการใช้งานจริงและคำอธิบายแยกตามฟีเจอร์ใหม่ที่สำคัญ
1 ความคิดเห็น
โปรเจ็กต์ก่อนหน้านี้ผมไม่รู้เลยว่าทำไมถึงโหลด json ไม่ได้
ที่แท้มันไม่รองรับมาตั้งแต่แรกนี่เอง.. หืมๆ