۸ قابلیت جدید جاوااسکریپت ES2020
اینجاییم تا نگاهی بندازیم به هشت قابلیت جدید جاوا اسکریپت ES2020 .
قابلیت اول: BigInt
یکی از قابلیتهای پیشبینی شده در جاوا اسکریپت BigInt بود. خب همونطور که میدونید در واقع به برنامهنویسان جاوا اسکریپت این امکان رو میده که از اعداد بزرگتری استفاده کنن و محدودیت های قبل رو نداشته باشن.
با این حال، همونطور که در عکس دیدید، باید در انتهای عدد یک n داشته باشید. این n بیانگر اینه که مقدار شما یک BigInt هست و باید با موتور JavaScript (توسط موتور v8 یا هر موتور دیگهای که از اون استفاده میکنه) متفاوت رفتار بشه.
قابلیت دوم: Dynamic import
این قابلیت در ES2020 به شما این امکان رو میده که فایلهای جاوا اسکریپت رو به صورت داینامیک به عنوان ماژول در برنامه خودتون وارد کنید. این کاملا شبیه نحوه انجام همین عمل در Webpack و Babel هست.
این ویژگی به شما کمک میکنه تا کدهای split شده تون رو بدون سربار شدن webpack یا سایر module bundler ها ارسال کنید.
نکته خوب اینه که شما در واقع دارید یک ماژول رو وارد میکنید، بنابراین هیچوقت فضای نامی global رو تحت اثر قرار نمیده.
قابلیت سوم: Nullish Coalescing
این قابلیت بسیار جالبه و به شما امکان بررسی واقعی مقادیر Nullish رو به جای مقادیر falsey میده. امکان داره بپرسید تفاوت مقادیر Nullish و falsey چیه؟ در جاوا اسکریپت خیلی از مقادیر falsey هستند، مانند رشته های خالی، عدد 0 ، undefined ، null ، false ، NaN و غیره. با این وجود بسیاری از اوقات ممکنه نیاز داشته باشید تا بررسی کنید که یک متغیر nullish هست یا خیر. یعنی اگر undefined یا null باشه ، مانند زمانی که یک متغیر از نظر شما اجازه داره یک رشته خالی یا حتی مقدار false داشته باشه.
در این حالت ، شما باید از عملوند جدیدی به نام Nullish Coalescing (دو تا علامت سوال) استفاده کنید.
قابلیت چهارم: Optional Chaining
این قابلیت واقعا عالیه. به شما این امکان رو میده که بدون نگرانی از وجود یک خاصیت یا عدم وجودش، بهطور عمیق ازش استفاده کنید. اگه خاصیت مورد نظر وجود داشته باشه که قطعا مشکلی نیست! اما اگه اینطور نباشه چی؟ شما معمولا این موقع چیکار میکردین؟ قطعا قبلش بررسی میکردین که خاصیت وجود داره یا نه و بعدش بهش دسترسی پیدا میکردین و قطعا شرطتون خیلی طولانی میشد. راهکار ES2020 برای حل این مسئله خیلی کاربردیه.
این قابلیت نهتنها روی خاصیتهای آبجکتها، حتی در فراخوانی ها و آرایه ها هم کار می کند. به تصویر زیر دقت کنید:
قابلیت پنجم: Promise.allSettled
این متد آرایهای از Promise ها رو دریافت میکنه و فقط در صورت حل و فصل همه اونها یا حل یا رد میشه.
به تصویر زیر توجه کنید:
قابلیت ششم: String#matchAll
این قابلیت روشی جدیده که به نمونه اولیه String اضافه شده و مربوط به عبارت با قاعده یا Regular Expressions هست. این یک شمارنده یا iterator هست که همه گروه های همسان رو یکی پس از دیگری بر میگردونه. برای درک بهتر تصویر زیر رو ببینید:
قابلیت هفتم: globalThis
اگر شما کد جاوا اسکریپت Cross-Platform نوشته باشید و بخواید روی Node اجراش کنید، در محیط مرورگر و همچنین در web worker ها کار کنه ، قطعا شما وقت زیادی صرف مدیریت آبجکتهای global خواهید کرد.
دلیل این امر اینه که window برای مرورگر، global برای Node و self برای web worker ها هست. اگر زمان اجرا بیشتر باشه، آبجکت global برای اونها متفاوت خواهد بود. بنابراین شما باید در پیادهسازی و تشخیص زمان اجرا دقت لازم رو داشته باشید.
در ES2020 فرقی نمیکنه که شما کدتون رو کجا اجرا میکنید. globalThis همیشه به آبجکت global اشاره میکنه. تصویر زیر رو ببینید:
قابلیت هشتم: Module Namespace Exports
پیش از این در ماژول های JavaScript جهت import کردن امکان استفاده از روش زیر وجود داشت:
import * as utils from './utils.mjs'
با این حال، هیچ روشی شبیه بالا برای export کردن ماژولها مثل پایین وجود نداشت:
export * as utils from './utils.mjs'
ولی حالا میتونید از روش پایین استفاده کنید:
import * as utils from './utils.mjs'
export { utils }
کلام آخر:
قطعا این روزها شاهد پیشرفت خوبی در جاوا اسکریپت هستیم و این قابلیتهای جدید گاهی خیلی به کارمون میاد و به کارمون سرعت میبخشه. از مواردی که گفته شد کدومش برای شما جالب تر بود؟
خوشحال میشم در صورت نیاز جهت بهبود مطلب یا رفع اشکالات، نظراتتون رو بشنوم.
مطلبی دیگر از این انتشارات
مجموعهای از سوالات مصاحبههای اندروید (بخش اول)
مطلبی دیگر از این انتشارات
اشتباهات زبان بدن که شما را از پیشرفت شغلی باز می دارد
مطلبی دیگر از این انتشارات
برنامهنویسی فانکشنال در پایتون - قسمت ۱