2025 (2025)
اینجا تازه های «اکمااسکریپت 2025 (ECMAScript 2025)» را می بینی. هر ویژگی یعنی قانون تازه زبان. با مثال های کوتاه جلو می رویم و سریع تمرین می کنیم.
فهرست ویژگی های مهم 2025
ویژگی های مهم شامل پرچم /v در عبارت منظم، RegExp.escape()، نوع Float16Array، متد Math.f16round()، متد Promise.try()، ویژگی های جدید Set، و «Import Attributes» هستند.
هشدار: این ویژگی ها تازه هستند. برای مرورگرهای قدیمی شاید پلی فیل لازم شود.
پرچم /v در عبارت منظم (RegExp /v)
پرچم «v» نسخه قوی تر «u» است. پشتیبانی یونیکد (Unicode) را گسترده تر می کند. مثلاً ایموجی ها را بهتر می شناسد.
let text = "Hello \u{1F604}";
let pattern = /\p{RGI_Emoji}/v;
let result = pattern.test(text);
console.log(result);
let text = "Hello \u{1F604}";
let pattern = /\p{RGI_Emoji}/;
let result = pattern.test(text);
console.log(result);
نکته: استفاده همزمان از پرچم های u و v خطای نحو می دهد.
تابع RegExp.escape()
تابع «escape» کاراکترهای ویژه الگوی رگ اکس را بی خطر می کند. یعنی آن ها را «متن ساده» می کند.
const raw = "[*] is a web school.";
const safe = RegExp.escape("[*]");
const regex = new RegExp(safe);
const ok = regex.test(raw);
console.log(ok);
آرایه تایپ شده Float16Array
«Float16Array» اعداد اعشاری 16 بیتی ذخیره می کند. حافظه نصف «Float32Array» مصرف می کند.
const arr = new Float16Array([1.5, 2.5, 3.5, 4.5]);
console.log(arr.BYTES_PER_ELEMENT);
console.log(arr.length);
گرد کردن به نیم دقت با Math.f16round()
این متد نزدیک ترین نمایش 16 بیتی را برمی گرداند. برای سرعت یا حافظه خوب است.
let a = Math.f16round(2.60);
let b = Math.f16round(2.50);
let c = Math.f16round(2.49);
let d = Math.f16round(-2.60);
let e = Math.f16round(-2.50);
let f = Math.f16round(-2.49);
console.log(a, b, c, d, e, f);
Promise.try()
این متد زنجیره «پرومیس (Promise)» را از کد همگام اما خطاپذیر شروع می کند. خطاها به رد شدن پرومیس تبدیل می شوند.
function compute() {
return Promise.try(() => {
const v = mayThrowSync();
return asyncFunc(v);
});
}
ویژگی های جدید Set
عملگرهای مجموعه ای مستقیم آمدند. اجتماع، اشتراک، تفاضل، تفاضل متقارن، زیرمجموعه، اَبَرمجموعه، و بی اشتراکی.
const A = new Set(["a", "b", "c"]);
const B = new Set(["b", "c", "d"]);
const U = A.union(B);
console.log(U);
const A = new Set(["a", "b", "c"]);
const B = new Set(["b", "c", "d"]);
const I = A.intersection(B);
console.log(I);
const A = new Set(["a", "b", "c"]);
const B = new Set(["b", "c", "d"]);
const D = A.difference(B);
console.log(D);
const A = new Set(["a", "b", "c"]);
const B = new Set(["b", "c", "d"]);
const S = A.symmetricDifference(B);
console.log(S);
const A = new Set(["a", "b", "c"]);
const B = new Set(["b", "c", "d"]);
console.log(A.isSubsetOf(B));
console.log(A.isSupersetOf(B));
console.log(A.isDisjointFrom(B));
Import Attributes در ماژول ها
«Import Attributes» نوع فایل را در import مشخص می کند. مثل JSON یا CSS.
import { names } from "module-name" with { type: "data" };
import config from "config.json" with { type: "json" };
import styles from "styles.css" with { type: "css" };
گام های تمرین سریع
- یک ویژگی را انتخاب کن و اجرا کن.
- نتیجه را در کنسول بررسی کن.
- کد را کمی تغییر بده و دوباره تست کن.
جمع بندی سریع
- پرچم /v یونیکد را قوی تر کرد.
- RegExp.escape متن را بی خطر می کند.
- Float16Array حافظه کم تری می گیرد.
- Set اکنون عملگرهای کامل دارد.
برای مرور کلی نسخه ها، صفحه نسخه ها را ببین. برای ویژگی های سال قبل، به 2024 سر بزن. همچنین مرور ایموجی های UTF-8 مفید است.