چیزهای تازهٔ ECMAScript 2026
خلاصهٔ کاملتر
به گفتهٔ نویسنده، در ۳۰ ژوئن ۲۰۲۶ مشخصات زبان ECMAScript 2026 توسط Ecma International تصویب شد و این مقاله خلاصهای از اضافات تازهست. زبان بهخودیخود قویه و نویسنده هنوز انگیزه داره هر سال تغییرات رو دنبال کنه.
یکی از اضافات، Array.fromAsync ه که خلأ نبود یه متد استاتیک برای ایتریتورهای async رو پر میکنه؛ از یه ایتریتور async (یا یه جنریتور sync که پرامیس yield میکنه) آرایه میسازه. بعدش Error.isError اومده که جایگزین امنتری برای instanceof Error ه:
try {
throw new Error("This is an error");
} catch (error) {
console.log(Error.isError(error)); // true
}اضافهٔ کاربردی دیگه Math.sumPrecise ه. جمع کردن یه لیست عدد با Array.reduce رایجه ولی دقت اعشاری رو خراب میکنه؛ این متد هم reducer رو حذف میکنه و هم دقت بهتری برای اعداد ممیز شناور میده:
const values = [1e20, 0.1, -1e20];
values.reduce((a, b) => a + b, 0); // 0
Math.sumPrecise(values); // 0.1نویسنده به تبدیل داخلی Uint8Array به Base64 و hex و برعکس هم اشاره میکنه (با toBase64، toHex، fromBase64 و fromHex) که یه وابستگی اضافه رو از پروژهها حذف میکنه. همینطور Iterator Sequencing با Iterator.concat اومده که بهجای نوشتن یه جنریتور دستی برای ترکیب ایتریتورها، چند ایتریتور رو پشتسرهم میچینه و حتی اجازه میده مقدار وسطشون جا بدی.
آخرین مورد مهم، دسترسی به متن اصلی در JSON.parse ه. به گفتهٔ نویسنده، marshalling جیسون تو جاوااسکریپت lossyه و مثلاً عدد بزرگ رو اشتباه parse میکنه یا BigInt رو نمیتونه stringify کنه. حالا کالبک reviver در JSON.parse یه آرگومان سوم به اسم source میگیره که به متن اصلی دسترسی میده، و در سمت stringify هم میشه مقدار رو از JSON.rawJSON() رد کرد تا این مشکلات حل بشه.
نکات کلیدی:
- تصویب رسمی ECMAScript 2026 در ۳۰ ژوئن ۲۰۲۶
- Array.fromAsync برای ساختن آرایه از ایتریتور async
- Error.isError جایگزین امنتر instanceof Error
- Math.sumPrecise برای جمع دقیق اعداد اعشاری
- تبدیل داخلی Uint8Array ↔ Base64/hex، Iterator.concat و دسترسی به source در JSON.parse




