2020 (2020)
در «جاوااسکریپت 2020» چند ابزار مهم آمد: BigInt برای اعداد خیلی بزرگ، matchAll() برای یافتن همه تطبیق ها، Promise.allSettled() برای گزارش وضعیت همه وعده ها، و عملگرهای تازه مثل ?? و ?.. همه را ساده و کاربردی می بینیم.
ویژگی های تازه جاوااسکریپت 2020
«BigInt» یعنی نوع عددیِ صحیحِ بزرگ. «وعده (Promise)» یعنی قولِ نتیجه آینده. «بارگذاری پویا» یعنی آوردن ماژول هنگام نیاز.
BigInt؛ وقتی عددت خیلی بزرگ است
عدد معمولی تا حدود 15 رقم دقیق است. بعد از آن دقت می ریزد.
let x = 999999999999999;
let y = 9999999999999999;
برای دقت بالا، از BigInt استفاده کن. پسوند n بگذار.
let a = 9999999999999999n;
let b = BigInt(1234567890123456789012345);
نوع BigInt در جاوااسکریپت برابر "bigint" است.
let v = BigInt(999999999999999);
let t = typeof v;
matchAll(); همه تطبیق ها را بگیر
متد matchAll() یک «گرداننده (Iterator)» برمی گرداند. سپس روی همه تطبیق ها می چرخی.
const iterator1 = text.matchAll("Cats");
نکته: اگر از «الگوی منظم (RegExp)» استفاده می کنی، پرچم g را بگذار.
const iterator2 = text.matchAll(/Cats/g);
const iterator3 = text.matchAll(/Cats/gi);
Promise.allSettled(); گزارش وضعیت همه
این متد نتیجه همه وعده ها را با وضعیت برمی گرداند؛ موفق یا ناموفق.
const p1 = new Promise((resolve, reject) => {
setTimeout(resolve, 200, "King");
});
const p2 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, "Queen");
});
Promise.allSettled([p1, p2]).then((results) => {
results.forEach((r) => {
myDisplay(r.status);
});
});
عملگر ??؛ مقدار پیش فرضِ منطقی
عملگر ?? اگر مقدار اول «خالیِ واقعی» باشد برمی گرداند دوم را. خالیِ واقعی یعنی null یا undefined.
let name = null;
let text = "missing";
let result = name ?? text;
اختیاری سازی ?.؛ خطا نده، undefined بده
عملگر ?. اگر مسیر وجود نداشت، به جای خطا، undefined می دهد.
const car = { type: "Fiat", model: "500", color: "white" };
let safeName = car?.name;
عملگرهای انتساب منطقی؛ نوشتن کوتاه تر
اگر اولی درست باشد، &&= دومی را می نویسد. اگر اولی غلط باشد، ||= دومی را می نویسد. اگر اولی خالیِ واقعی باشد، ??= دومی را می نویسد.
let a1 = 10;
a1 &&= 5;
let a2 = 0;
a2 ||= 5;
let a3;
a3 ??= 10;
Dynamic Import؛ ماژول را وقتی لازم شد بیاور
با «ورود پویا»، ماژول را موقع نیاز بارگذاری می کنی. باید داخل اسکریپتِ ماژولی اجرا شود.
import("./module.js").then((m) => {
// use module here
});
گام های تمرین سریع
- یک
BigIntبساز و نوعش را چاپ کن. - با
matchAll()همه «cat»ها را پیدا کن. - با
??و?.خطاها را ایمن کن.
جمع بندی سریع
BigIntبرای اعداد خیلی بزرگ است.matchAll()همه تطبیق ها را می دهد.allSettled()وضعیت همه وعده ها را گزارش می کند.??و?.کد را ایمن تر می کنند.
برای ادامه مسیر، صفحه جاوااسکریپت 2020 را ذخیره کن و سپس به جاوااسکریپت 2021 یا نسخه قدیمی تر جاوااسکریپت 2019 سر بزن.