هر سال با ارائه استانداردهای جدید اکماسکریپت، ویژگی های جدیدی هم به جاواسکریپت اضافه میشه. با انتشار ویژگی های جدید اکماسکریپت (در تابستان ۲۰۱۹) تصمیم گرفتم این مقاله رو بنویسم. ویژگی های نسخه جدید اکماسکریپت در نود ، و همچنین مرورگرهای کروم، فایرفاکس و سافاری قابل دسترس هستند و برای استفاده از این ویژگی ها تو نسخه های قدیمی تر میتونیم از Babel استفاده کنیم.
خوب بریم ببینیم ویژگی های جدید اکماسکریپت ۲۰۱۹ چی هست. برای درک بهتر هر بخش، یک مثال ساده هم ارائه شده. قسمت اول این مقاله رو میتونید اینجا مطالعه کنید:
تو قسمت قبل دیدیم که ویژگی مسطح سازی با استفاده از متد flat به سادگی انجام شد. حالا این مثال رو در نظر بگیرید. استاد تصمیم میگیره همه نمره هارو روی نمودار ببره و به هر کس ۷ نمره اضافه کنه و نمره قبلی و نمره جدید رو توی یک لیست داشته باشه.
به لطف ES2019 بجای استفاده از متد concat میتونیم از flat استفاده کنیم:
از اونجایی که استفاده همزمان از map و flat خیلی کاربرد داره،اکماسکریپت ۲۰۱۹ یک متد جدید به اسم flatMap ساخته تا کد بالا رو بازهم ساده تر کنه:
خوب اگه یادتون باشه، آرگومان پیش فرض flat مقدار ۱ بود. flatMap از ترکیب flat و map به وجود اومده که flat اون آرگومانی نداره، پس همیشه عمق مسطح سازی متد flatMap ، یک هست!
مثال زیر نشون میده که با تغییر مدل map دیگه عمل مسطح سازی تا ۲ عمق انجام نمیشه:
وضعیت پشتیبانی از این ویژگی جدید:
قبلا وقتی میخواستیم فاصله های اضافی رو از یک رشته پاک کنیم از متدهای String.trimRight و همچنین String.trimLeft استفاده میکردیم. درسته که مشکلی با عملکرد این متدها وجود نداره اما برای خیلی ها این اسامی بار معنایی مناسبی رو ارائه نمیکنه:
اکماسکریپت ۲۰۱۹ برای این توابع اسامی بهتر و ملموس تری رو ارائه کرده:
خط آخر استفاده همزمان از هردو متد برای حذف همه فواصل اضافی رو نشون میده.
وضعیت پشتیبانی از این ویژگی جدید:
این ویژگی قبلا هم وجود داشته اما نحوه نمایش خروجی این متد توی اکماسکریپت ۲۰۱۹ تغییر کرده.
نحوه نمایش فعلی این متد رو میتونید ببینید:
میبینید که همه خط های جدید و فواصل تب ، به کارکترهای n\ و t\ تبدیل شده و کل خروجی در یک خط نمایش داده شده. توی اکماسکریپت جدید این ویژگی تغییر کرده:
وضعیت پشتیبانی از این ویژگی جدید:
سایر مقاله های من در ویرگول:
Contact With me:
https://t.me/nimamohamadian
https://www.facebook.com/nimamohamadian89
https://twitter.com/Nima_Mohamadian
https://www.linkedin.com/in/nima-mohamadian-57ba63123