یک ماه تا پایان سال 2021 مانده و من دیشب قبل از خواب مقاله ای را خواندم مربوط به چند ماه پیش که حیفم آمد ترجمه اش نکنم.
جاوااسکریپت زبانی که هر سال بیشتر از قبل در حال پیشرفت است، از سال 2015 که اکمااسکریپت 6 معرفی شد هر ساله شاهد این موضوع هستیم که قابلیت های کاربردی به این زبان برنامه نویسی اضافه میشود. با این حساب استاندارد اکمااسکریپت 12 که ژوئن 2021 (تابستان 1400) منتشر شده هم مثل سال های قبل ویژگی هایی اضافه کرده که کار را برای برنامه نویسان جاوااسکریپت بسیار راحت تر خواهد کرد.
عبارات باقاعده (Regular expressions) بخاطر هیبت بدترکیبشان بسیار ترسناک هستند حتی برنامه نویسان خبره نیز تا جای ممکن سعی میکنند تا سروکارشان به این موجودات نخورد.
خیلی جا خوش نکن، تو میتونی جایگزین بشی.
- ناشناس
در جاوااسکریپت ممکن نیست تا تمام موارد در یک رشته را به صورت یکجا با رشته دیگری جایگزین کرد مگر اینکه از عبارت باقاعده (/رشته/g) استفاده کنید.
بله تابستان آمده و بازار اسموتی ها هم داغ شده، پایه همه اسموتی های من انبه است چه کسی است که انبه دوست نداشته باشد؟
ما چند میوه داریم اما اینجا سیب جز ترکیب موردنظر ما نیست پس باید سیب ها را با انبه که محبوب قلب ها است جایگزین کنیم. در گذشته از متد replace استفاده میکردیم:
برای اینکه تمام سیب ها را با انبه جایگزین کنیم از عبارت باقاعده استفاده میکنیم - طبیعتا باب میل هر کسی نیست.
متد جدید replaceAll آخرتِ متد replace برای رشته ها است و این مشکل را حل میکند. حالا با این متد تمام سیب ها را با انبه جایگزین خواهیم کرد:
خب! خیلی خوشمزه به نظر میرسد.
متد replaceAll این را ممکن میکند تا به سادگی رشته ها را بدون نیاز به استفاده از عبارت باقاعده برای چنین مواردی جایگزین کنید. این متد خوشدست میتواند در ساخت برنامه های پردازگر متن بسیار کاربردی باشد.
یکی از کارهایی ما حین برنامه نویسی انجام میدهیم تصمیم گیری است، هر چقدر تصمیمات شما بهتر باشند ساختار کدهای شما نیز بهتر خواهد بود.
هرگز برای چیزهای گذرا تصمیم های قطعی نگیر.
- گوتاما بودا
در برنامه نویسی ما از اپراتور های عملگرای منطقی برای تصمیم گیری استفاده میکنیم، اکمااسکریپت 12 نیز اپراتورهای عملگرای کاربردی معرفی کرده،
??= &&= ||=
کد زیر میتواند با یک ??= خلاصه شود:
کد زیر میتواند با یک &&= خلاصه شود:
کد زیر میتواند با یک ||= خلاصه شود:
&&= و ||= متفاوتند، اولی پوچ بودن یا تعریف نشدن را مدنظر قرار میدهد اما مورد دوم تنها به ناصحیح بودن توجه میکند.
اعداد گواهی ذهنی هستند که تنها به بشریت تعلق دارند.
- انوره دو بالزاک
امکان جدا کردن اعداد با _ پس از هر سه رقم نیز ویژگی است که به خوانایی کد کمک شایانی میکند.
در برنامه نویسی بسیاری از چیزها بصورت ناهمزمان انجام میشود، یعنی ما موردی را شروع میکنیم و قبل از اینکه تمام شود موردی دیگری نیز شروع میشود.
اکمااسکریپت 6 با Promise ها اجرای ناهمزمان تسک ها را بصورت معقولی ممکن ساخت. بعضی اوقات ممکن است Promise های متعددی را اجرا کنیم.
اکمااسکریپت 12 به ما تابع ()Promise.any را داده تا بفهمیم کدام Promise زودتر از بقیه به پایان رسیده است.
بصورت کلی ()Promise.any آرایه ای از Promise ها را دریافت میکند و قبل از تمام شدن همه آنها، موردی که زودتر از همه به پایان رسیده توسط این تابع برگشت داده میشود. اگر همه آنها مردود باشند اروری دریافت خواهید کرد.
برای مثال در زندگی واقعی قصد دارید به سه شخص متفاوت با نام های فرانک، شیوا و سارا درخواست قرار ارسال کنید و میخواهید بدانید کدام یک از آنها ابتدا جواب مثبت میدهد.
نتیجه برگشت داده شده ()Promise.any سارا است به دلیل اینکه اولین موردی بود که با موفقیت به پایان رسید (resolved). اگر تمامی درخواست ها رد میشدند یک AggregateError با ارائه دلیل رد شدن داده میشد. در برنامه نویسی وب ما از این ویژگی برای زمانی که یک داده با مقدار ثابت بین سرور و سمت کاربر بصورت ناهمزمان تبادل میشود استفاده میکنیم.
در این مقاله تمامی ویژگی های اکمااسکریپت 2021 ذکر نشده، ویژگی های دیگری از جمله WeakRef که جالب مطالعه بیشتر هستند.
1- پکیج های مذکور را نصب کنید:
2- یک فایل babel.config.json در مسیر اصلی پروژه تان ایجاد کنید:
3- یک فایل .browserlistrc در مسیر اصلی پروژه ایجاد و مرورگرهای مدنظرتان را مشخص کنید تا Babel کد را برای آنها تبدیل کند:
4- اجرا:
همین! حالا میتوانید از ویژگی های ES12 در پروژهایتان استفاده کنید!
منبع: ES12 is Going to Make Your Life Easier!