کمی درباره ویژگی‌های جدید در ES10

ترجمه و تالیف : عرفان کاکایی
تاریخ انتشار : 13 خرداد 98
خواندن در 3 دقیقه
دسته بندی ها : جاوا اسکریپت

هر سال، یک نسخه جدید از ECMAScript با طرح‌های پیشنهادی جدیدی منتشر می‌شود که آماده توزیع به توسعه دهندگان و کاربران هستند. این مقاله آخرین گفته‌های این زبان، و ویژگی‌های جدیدی که به میان می‌آورد را مورد بحث قرار خواهد داد.

ES10 / ES2019 بهبودهای خوبی را در این بروزرسانی اعمال کرده است. این نسخه توابع و متدهایی را معرفی می‌کند که توسعه دهندگان را قادر می‌سازند تا کد کمتری نوشته، و کار پربارتری انجام دهند.

بیایید به سراغ آن‌ها برویم.

flat()

flat() متدی است که برای مسطح‌سازی یک آرایه استفاده می‌شود. موقعیت‌های خاصی وجود دارند که عناصر یک آرایه، خودشان یک آرایه هستند. این نوع آرایه‌ها، آرایه‌های تو در تو نام دارند.

معمولا برای غیر تو در تو کردن (مسطح‌سازی) آن‌ها، باید از روند بازگشت (recursion) استفاده کنیم. حال با معرفی flat()، این کار می‌تواند با تنها یک خط انجام شود. به عبارتی یک آرایه مسطح‌سازی شده، آرایه‌ای با عمق صفر است. flat() یک آرگومان، یعنی یک عدد که عمق را مشخص می‌کند را می‌گیرد. عمق، برابر با مقدار تو در تویی داخل یک آرایه است. بیایید یک مثال برای توضیح تو در تویی و عمق را ببینیم.

کمی درباره ویژگی‌های جدید در ES10

آرایه بالا،‌ آرایه‌ای با عمق ۳ است. این یک آرایه داخل یک آرایه داخل یک آرایه داخل یک آرایه است. معمولا در JavaScript آرایه بالا می‌تواند تا زمانی که حافظه‌تان تمام شود، عمق بی نهایت را داشته باشد. فرض کنید که یک آرایه عمق ۳ دارد و ما آن را تا عمق ۲ مسطح‌سازی می‌کنیم. حال هنوز هم یک آرایه داخل آرایه اصلی وجود خواهد داشت.

سینتکس

کمی درباره ویژگی‌های جدید در ES10

مقدار برگشتی

این تابع یک آرایه مسطح‌سازی شده را بر می‌گرداند.

مثال

کمی درباره ویژگی‌های جدید در ES10

آرایه تو در توی دارای عمق ۳، با استفاده از flat برای عمق ۳ مسطح‌سازی شده است.

اگر ما عمق ۲ را در آن قرار دهیم، این نتیجه را به دست می‌آوریم:

کمی درباره ویژگی‌های جدید در ES10

ما می‌توانیم ببینیم که هنوز یک آرایه غیر مسطح را در خروجی داریم.

flatMap()

flatMap() برای مسطح‌سازی یک آرایه تو در تو و تغییر دادن مقادیر طبق یک تابع مانند تابع map() استفاده می‌شود. این تابع بر روی یک آرایه کار می‌کند و یک callback را به عنوان یک آرگومان می‌گیرد. این callback نحوه مسطح‌سازی شدن آرایه را مشخص می‌کند. flatMap() درست به مانند یک map عمل می‌کند، اما به علاوه همچنین آن را مسطح‌سازی می‌کند.

flatMap() می‌تواند برای مسطح‌سازی یک آرایه با عمق فقط ۱ استفاده شود؛ زیرا به طور داخلی یک تابع map را به همراه تابع flat با عمق ۳ فراخوانی می‌کند.

سینتکس

کمی درباره ویژگی‌های جدید در ES10

مقدار برگشتی

یک آرایه مسطح‌سازی شده با مقادیر دستکاری شده، با تشکر از تابع callbackای که برای آن فراهم شده است. درست به مانند یک map.

map() + flat() = flatmap()

مثال

کمی درباره ویژگی‌های جدید در ES10

در این مثال، map و flatMap() یک به یک نمایش داده شده‌اند تا تفاوت بین این دو تابع نشان داده شود. map() یک آرایه از آرایه‌ها را بر می‌گرداند که شامل مقادیر است، درحالیکه خروجی flatMap() درست به مانند map، به علاوه مسطح‌سازی آرایه می‌باشد.

Object.fromEntries()

یک تابع بسیار کاربردی دیگر. Object.fromEntries برای شکل دادن آرایه‌ها از یک جفت مقادیر کلیدی فراهم شده مورد استفاده قرار می‌گیرد. این تابع لیستی از جفت‌های مقادیر کلیدی را می‌گیرد و یک آبجکت را بر می‌گرداند که ویژگی‌های آن توسط ورودی‌ها تعیین شده‌اند. Object.fromEntries برعکس Object.entries() عمل می‌کند.

پارامترها

یک قابل تکرار (iterable)، یا به عبارتی یک آرایه را می‌گیرد.

مقدار برگشتی

یک آبجکت را به همراه جفت‌های مقادیر کلیدی داده شده بر می‌گرداند.

مثال

کمی درباره ویژگی‌های جدید در ES10

ما می‌توانیم ببینیم که وقتی ما یک map (که مقادیر را به صورت جفت جفت ذخیره می‌کند) را به تابع fromEntries() دادیم، یک آبجکت را با جفت‌های مقادیر کلیدی مربوطه درست به مانند داخل map به دست می‌آوریم.

trimStart()

متد trimStart() فضاهای خالی را از ابتدای یک رشته حذف می‌کند. trimLeft() نام مستعاری از این متد است.

سینتکس

کمی درباره ویژگی‌های جدید در ES10

مقدار برگشتی

یک رشته را با حذف کردن فضاهای خالی از سمت چپ بر می‌گرداند.

مثال

کمی درباره ویژگی‌های جدید در ES10

ما می‌توانیم به وضوح ببینیم که فضاهای خالی از خروجی حذف شده‌اند.

trimEnd()

متد trimEnd() فضاهای خالی را از انتهای یک آرایه حذف می‌کند. trimRight() نام مستعاری برای این متد است.

سینتکس

کمی درباره ویژگی‌های جدید در ES10

مقدار برگشتی

یک رشته را با حذف کردن فضاهای خالی از سمت راست بر می‌گرداند.

مثال

کمی درباره ویژگی‌های جدید در ES10

ما می‌توانیم به وضوح ببینیم که فضاهای خالی از انتها حذف شده‌اند.

تغییرات اعمال شده به اتصال catch

تا ES10، سینتکس مربوطه ما را مجبور می‌کرد که یک متغیر exception را برای بند catch متصل کنیم؛ حال چه این کار ضروری بود و چه نبود. در مواقع زیادی می‌توان متوجه شد که بلوک catch زائد است. طرح پیشنهادی ES10 ما را قادر می‌سازد تا به سادگی متغیر را به کلی حذف کنیم، و یک نگرانی کمتر داشته باشیم.

مثال

کمی درباره ویژگی‌های جدید در ES10

در مثال بالا، می‌توانیم ببینیم که هیچ متغیری برای catch فراهم نشده است که آن را اجرا کند.

توصیفات سمبل‌ها

وقتی که ما یک سمبل را در JS‌ می‌سازیم، می‌توان یک توصیف (description) را مشخص کرد که بعدها این توصیف می‌تواند برای اشکال‌زدایی استفاده شود. روند پس گرفتن این توصیف کمی خسته کننده است. ما باید مجددا سمبل مورد نظر را بازسازی کنیم، و با کمک متد toString() به آن توصیف دسترسی داشته باشیم.

ES10 یک ویژگی read-only دیگر که تحت عنوان description شناخته می‌شود را اضافه می‌کند، که توصیف سمبل مورد نظر را بر می‌گرداند.

مثال

کمی درباره ویژگی‌های جدید در ES10

ما می‌توانیم ببینیم که با استفاده از ویژگی .description سمبل مورد نظر، توصیف آن را مستقیما دریافت می‌کنیم.

جمع‌بندی

این‌ها برخی از ویژگی‌ها بودند که قرار است در استاندارد فعلی ES10 معرفی شوند. امیدوارم از این مقاله لذت برده باشید.

منبع

دیدگاه‌ها و پرسش‌ها

برای ارسال نظر لازم است ابتدا وارد سایت شوید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید