امیرمحمد محمدی | Amir M. Mohamadi
امیرمحمد محمدی | Amir M. Mohamadi
خواندن ۴ دقیقه·۳ سال پیش

جاوااسکریپت 2021 آمده تا زندگی را برای شما ساده تر کند

یک ماه تا پایان سال 2021 مانده و من دیشب قبل از خواب مقاله ای را خواندم مربوط به چند ماه پیش که حیفم آمد ترجمه اش نکنم.


جاوااسکریپت زبانی که هر سال بیشتر از قبل در حال پیشرفت است، از سال 2015 که اکمااسکریپت 6 معرفی شد هر ساله شاهد این موضوع هستیم که قابلیت های کاربردی به این زبان برنامه نویسی اضافه می‌شود. با این حساب استاندارد اکمااسکریپت 12 که ژوئن 2021 (تابستان 1400) منتشر شده هم مثل سال های قبل ویژگی هایی اضافه کرده که کار را برای برنامه نویسان جاوااسکریپت بسیار راحت تر خواهد کرد.


از عبارات باقاعده خوشتان نمی‌آید؟ مشکلی نیست متد replaceAll اینجاست!

عبارات باقاعده (Regular expressions) بخاطر هیبت بدترکیبشان بسیار ترسناک هستند حتی برنامه نویسان خبره نیز تا جای ممکن سعی می‌کنند تا سروکارشان به این موجودات نخورد.

خیلی جا خوش نکن، تو میتونی جایگزین بشی.
- ناشناس

در جاوااسکریپت ممکن نیست تا تمام موارد در یک رشته را به صورت یکجا با رشته دیگری جایگزین کرد مگر اینکه از عبارت باقاعده (/رشته/g) استفاده کنید.

عشق به انبه، عشق به همه خوبی ها

بله تابستان آمده و بازار اسموتی ها هم داغ شده، پایه همه اسموتی های من انبه است چه کسی است که انبه دوست نداشته باشد؟

ما چند میوه داریم اما اینجا سیب جز ترکیب موردنظر ما نیست پس باید سیب ها را با انبه که محبوب قلب ها است جایگزین کنیم. در گذشته از متد replace استفاده می‌کردیم:

فقط سیب اول با انبه جایگزین شده!
فقط سیب اول با انبه جایگزین شده!

برای اینکه تمام سیب ها را با انبه جایگزین کنیم از عبارت باقاعده استفاده می‌کنیم - طبیعتا باب میل هر کسی نیست.

متد جدید replaceAll آخرتِ متد replace برای رشته ها است و این مشکل را حل می‌کند. حالا با این متد تمام سیب ها را با انبه جایگزین خواهیم کرد:

خب! خیلی خوشمزه به نظر می‌رسد.

متد replaceAll این را ممکن می‌کند تا به سادگی رشته ها را بدون نیاز به استفاده از عبارت باقاعده برای چنین مواردی جایگزین کنید. این متد خوشدست می‌تواند در ساخت برنامه های پردازگر متن بسیار کاربردی باشد.

مشکلی در تصمیم گیری دارید؟ اپراتورهای عملگرا اینجا هستند تا به شما کمک کنند.

یکی از کارهایی ما حین برنامه نویسی انجام می‌دهیم تصمیم گیری است، هر چقدر تصمیمات شما بهتر باشند ساختار کدهای شما نیز بهتر خواهد بود.

هرگز برای چیزهای گذرا تصمیم های قطعی نگیر.
- گوتاما بودا

در برنامه نویسی ما از اپراتور های عملگرای منطقی برای تصمیم گیری استفاده می‌کنیم، اکمااسکریپت 12 نیز اپراتورهای عملگرای کاربردی معرفی کرده،

??= &&= ||=

??= تنظیم مقدار اگر پوچ یا تعریف نشده باشد

کد زیر می‌تواند با یک ??= خلاصه شود:

اگر متغیر پوچ یا تعریف نشده است مقدارش را تنظیم کن
اگر متغیر پوچ یا تعریف نشده است مقدارش را تنظیم کن

&&= تنظیم مقدار اگر متغیر TRUE باشد

کد زیر می‌تواند با یک &&= خلاصه شود:

اگر مقدار متغیر صحیح است مقدارش را تنظیم کن
اگر مقدار متغیر صحیح است مقدارش را تنظیم کن

||= تنظیم مقدار اگر FALSE باشد

کد زیر می‌تواند با یک ||= خلاصه شود:

اگر مقدار ناصحیح است مقدارش را تنظیم کن
اگر مقدار ناصحیح است مقدارش را تنظیم کن

&&= و ||= متفاوتند، اولی پوچ بودن یا تعریف نشدن را مدنظر قرار می‌دهد اما مورد دوم تنها به ناصحیح بودن توجه می‌کند.

کار کردن با اعداد رنج آور است؟ از زیرخط (_) استفاده کنید.

اعداد گواهی ذهنی هستند که تنها به بشریت تعلق دارند.
- انوره دو بالزاک

امکان جدا کردن اعداد با _ پس از هر سه رقم نیز ویژگی است که به خوانایی کد کمک شایانی می‌کند.

با اولی آشنا و عاقبت به خیر شو

در برنامه نویسی بسیاری از چیزها بصورت ناهمزمان انجام می‌شود، یعنی ما موردی را شروع می‌کنیم و قبل از اینکه تمام شود موردی دیگری نیز شروع می‌شود.

اکمااسکریپت 6 با Promise ها اجرای ناهمزمان تسک ها را بصورت معقولی ممکن ساخت. بعضی اوقات ممکن است Promise های متعددی را اجرا کنیم.

اکمااسکریپت 12 به ما تابع ()Promise.any را داده تا بفهمیم کدام Promise زودتر از بقیه به پایان رسیده است.

بصورت کلی ()Promise.any آرایه ای از Promise ها را دریافت می‌کند و قبل از تمام شدن همه آنها، موردی که زودتر از همه به پایان رسیده توسط این تابع برگشت داده می‌شود. اگر همه آنها مردود باشند اروری دریافت خواهید کرد.

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

خیلی هم خوب، قرار شما با سارا خواهد بود.
خیلی هم خوب، قرار شما با سارا خواهد بود.

نتیجه برگشت داده شده ()Promise.any سارا است به دلیل اینکه اولین موردی بود که با موفقیت به پایان رسید (resolved). اگر تمامی درخواست ها رد می‌شدند یک AggregateError با ارائه دلیل رد شدن داده می‌شد. در برنامه نویسی وب ما از این ویژگی برای زمانی که یک داده با مقدار ثابت بین سرور و سمت کاربر بصورت ناهمزمان تبادل می‌شود استفاده می‌کنیم.

در این مقاله تمامی ویژگی های اکمااسکریپت 2021 ذکر نشده، ویژگی های دیگری از جمله WeakRef که جالب مطالعه بیشتر هستند.

برای اضافه کردن ویژگی های جدید اکمااسکریپت 12 این مراحل را دنبال کنید:

1- پکیج های مذکور را نصب کنید:

2- یک فایل ‍‍‍‍‍babel.config.json‍‍‍‍ در مسیر اصلی پروژه تان ایجاد کنید:

3- یک فایل .browserlistrc در مسیر اصلی پروژه ایجاد و مرورگرهای مدنظرتان را مشخص کنید تا Babel کد را برای آنها تبدیل کند:

4- اجرا:

همین! حالا می‌توانید از ویژگی های ES12 در پروژهایتان استفاده کنید!

منبع: ES12 is Going to Make Your Life Easier!











جاوااسکریپتوبفرانت اندjavascript
طراحی می‌کنم و برای وب کد می‌زنم | علاقه‌مند به نوشتن
شاید از این پست‌ها خوشتان بیاید