هر سال، یک نسخه جدید از ECMAScript با طرحهای پیشنهادی جدیدی منتشر میشود که آماده توزیع به توسعه دهندگان و کاربران هستند. این مقاله آخرین گفتههای این زبان، و ویژگیهای جدیدی که به میان میآورد را مورد بحث قرار خواهد داد.
ES10 / ES2019 بهبودهای خوبی را در این بروزرسانی اعمال کرده است. این نسخه توابع و متدهایی را معرفی میکند که توسعه دهندگان را قادر میسازند تا کد کمتری نوشته، و کار پربارتری انجام دهند.
بیایید به سراغ آنها برویم.
flat()
flat() متدی است که برای مسطحسازی یک آرایه استفاده میشود. موقعیتهای خاصی وجود دارند که عناصر یک آرایه، خودشان یک آرایه هستند. این نوع آرایهها، آرایههای تو در تو نام دارند.
معمولا برای غیر تو در تو کردن (مسطحسازی) آنها، باید از روند بازگشت (recursion) استفاده کنیم. حال با معرفی flat()، این کار میتواند با تنها یک خط انجام شود. به عبارتی یک آرایه مسطحسازی شده، آرایهای با عمق صفر است. flat() یک آرگومان، یعنی یک عدد که عمق را مشخص میکند را میگیرد. عمق، برابر با مقدار تو در تویی داخل یک آرایه است. بیایید یک مثال برای توضیح تو در تویی و عمق را ببینیم.
آرایه بالا، آرایهای با عمق ۳ است. این یک آرایه داخل یک آرایه داخل یک آرایه داخل یک آرایه است. معمولا در JavaScript آرایه بالا میتواند تا زمانی که حافظهتان تمام شود، عمق بی نهایت را داشته باشد. فرض کنید که یک آرایه عمق ۳ دارد و ما آن را تا عمق ۲ مسطحسازی میکنیم. حال هنوز هم یک آرایه داخل آرایه اصلی وجود خواهد داشت.
سینتکس
مقدار برگشتی
این تابع یک آرایه مسطحسازی شده را بر میگرداند.
مثال
آرایه تو در توی دارای عمق ۳، با استفاده از flat برای عمق ۳ مسطحسازی شده است.
اگر ما عمق ۲ را در آن قرار دهیم، این نتیجه را به دست میآوریم:
ما میتوانیم ببینیم که هنوز یک آرایه غیر مسطح را در خروجی داریم.
flatMap()
flatMap() برای مسطحسازی یک آرایه تو در تو و تغییر دادن مقادیر طبق یک تابع مانند تابع map() استفاده میشود. این تابع بر روی یک آرایه کار میکند و یک callback را به عنوان یک آرگومان میگیرد. این callback نحوه مسطحسازی شدن آرایه را مشخص میکند. flatMap() درست به مانند یک map عمل میکند، اما به علاوه همچنین آن را مسطحسازی میکند.
flatMap() میتواند برای مسطحسازی یک آرایه با عمق فقط ۱ استفاده شود؛ زیرا به طور داخلی یک تابع map را به همراه تابع flat با عمق ۳ فراخوانی میکند.
سینتکس
مقدار برگشتی
یک آرایه مسطحسازی شده با مقادیر دستکاری شده، با تشکر از تابع callbackای که برای آن فراهم شده است. درست به مانند یک map.
map() + flat() = flatmap()
مثال
در این مثال، map و flatMap() یک به یک نمایش داده شدهاند تا تفاوت بین این دو تابع نشان داده شود. map() یک آرایه از آرایهها را بر میگرداند که شامل مقادیر است، درحالیکه خروجی flatMap() درست به مانند map، به علاوه مسطحسازی آرایه میباشد.
Object.fromEntries()
یک تابع بسیار کاربردی دیگر. Object.fromEntries برای شکل دادن آرایهها از یک جفت مقادیر کلیدی فراهم شده مورد استفاده قرار میگیرد. این تابع لیستی از جفتهای مقادیر کلیدی را میگیرد و یک آبجکت را بر میگرداند که ویژگیهای آن توسط ورودیها تعیین شدهاند. Object.fromEntries برعکس Object.entries() عمل میکند.
پارامترها
یک قابل تکرار (iterable)، یا به عبارتی یک آرایه را میگیرد.
مقدار برگشتی
یک آبجکت را به همراه جفتهای مقادیر کلیدی داده شده بر میگرداند.
مثال
ما میتوانیم ببینیم که وقتی ما یک map (که مقادیر را به صورت جفت جفت ذخیره میکند) را به تابع fromEntries() دادیم، یک آبجکت را با جفتهای مقادیر کلیدی مربوطه درست به مانند داخل map به دست میآوریم.
trimStart()
متد trimStart() فضاهای خالی را از ابتدای یک رشته حذف میکند. trimLeft() نام مستعاری از این متد است.
سینتکس
مقدار برگشتی
یک رشته را با حذف کردن فضاهای خالی از سمت چپ بر میگرداند.
مثال
ما میتوانیم به وضوح ببینیم که فضاهای خالی از خروجی حذف شدهاند.
trimEnd()
متد trimEnd() فضاهای خالی را از انتهای یک آرایه حذف میکند. trimRight() نام مستعاری برای این متد است.
سینتکس
مقدار برگشتی
یک رشته را با حذف کردن فضاهای خالی از سمت راست بر میگرداند.
مثال
ما میتوانیم به وضوح ببینیم که فضاهای خالی از انتها حذف شدهاند.
تغییرات اعمال شده به اتصال catch
تا ES10، سینتکس مربوطه ما را مجبور میکرد که یک متغیر exception را برای بند catch متصل کنیم؛ حال چه این کار ضروری بود و چه نبود. در مواقع زیادی میتوان متوجه شد که بلوک catch زائد است. طرح پیشنهادی ES10 ما را قادر میسازد تا به سادگی متغیر را به کلی حذف کنیم، و یک نگرانی کمتر داشته باشیم.
مثال
در مثال بالا، میتوانیم ببینیم که هیچ متغیری برای catch فراهم نشده است که آن را اجرا کند.
توصیفات سمبلها
وقتی که ما یک سمبل را در JS میسازیم، میتوان یک توصیف (description) را مشخص کرد که بعدها این توصیف میتواند برای اشکالزدایی استفاده شود. روند پس گرفتن این توصیف کمی خسته کننده است. ما باید مجددا سمبل مورد نظر را بازسازی کنیم، و با کمک متد toString() به آن توصیف دسترسی داشته باشیم.
ES10 یک ویژگی read-only دیگر که تحت عنوان description شناخته میشود را اضافه میکند، که توصیف سمبل مورد نظر را بر میگرداند.
مثال
ما میتوانیم ببینیم که با استفاده از ویژگی .description سمبل مورد نظر، توصیف آن را مستقیما دریافت میکنیم.
جمعبندی
اینها برخی از ویژگیها بودند که قرار است در استاندارد فعلی ES10 معرفی شوند. امیدوارم از این مقاله لذت برده باشید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید