ویرگول
ورودثبت نام
رهام رفیعی تهرانی
رهام رفیعی تهرانیبرنامه نویسی یک شغل نیست، یک هنره.
رهام رفیعی تهرانی
رهام رفیعی تهرانی
خواندن ۳ دقیقه·۳ سال پیش

۶ ویژگی جدید در استاندارد ۲۰۲۲ (ES13) جاوااسکریپت


  1. متد at

در جاوااسکریپ وقتی میخواهیم عنصر nاُم آرایه را برگردانیم، معمولا از براکت ها، [ ]، استفاده میکنیم.


اما هنگامی که میخواهیم عنصری از انتهای آرایه را برگردانیم، ابتدا باید طول آرایه را حساب کنیم و بر اساس طول آرایه شماره ایندکس مربوطه را فراخوانی کنیم.


در ES2020 دیگر استفاده از این روش جالب نیست و منسوخ شده است. نسخه جدید با تعریف متد جدید at ، این پیچیدگی را کم کرده است و به ما اجازه میدهد به راحتی به عناصر انتهای آرایه دسترسی پیدا کنیم.

با استفاده از روش جدید میتوانیم حرفه ای تر کد بنویسیم :)


۲. متد Object.hasOwn

تا پیش از ES13 دو روش برای تست وجود یک property در یک آبجکت وجود داشت:

  • 'name' in object
  • obj.hasOwnProperty('name')

حالت اول: اپراتور "in"

در این حالت، property مورد نظر چه در آبجکت وجود داشت چه در prototype chain ، مقدار true برگردانده میشد:


حالت دوم: متد hasOwnProperty

با این متد چنانچه property مخصوص آبجکت باشد مقدار true و چنانچه وجود نداشته باشد یا به ارث رسیده باشد (در prototype chain باشد) مقدار false برگردانده میشود:

اما این متد در برخی شرایط مطمئن عمل نمیکند:


متد جدید hasOwn در نسخه ۲۰۲۲ تعریف شده است که این ایراد را برطرف میکند.


۳. استفاده از await در بالاترین سطح ماژول

پیش از ES13 استفاده از await به این صورت بود که حتما باید داخل متدی با کلیدواژه async استفاده میشد.

همان طور که در مثال بالا مشخص شده، برای استفاده از getUserInfo حتما باید متدی با کلیدواژه async تعریف میشد. در ES13 اما نیازی به تعریف async نیست و برای گرفتن جواب Promise، در خود ماژول میتوان مستقیم از await استفاده کرد:

۴. استفاده از # برای تعریف private properties

در گذشته معمولا از underline (_) برای تعریف متغیرهای private در کلاس استفاده میکردیم. اما بیشتر یک نماد بود نه راهی مطمئنی برای تعریف متغیر private. میتوانستیم از بیرون مقدار آن را تغییر بدهیم:

اما ES13 به ما راهی مطمئن برای تعریف متغیرهای private با استفاده از # را ارائه کرده است:


۵. راه ساده تر برای تعریف member variables در کلاس ها

در گذشته متغیرهای کلاس به صورت زیر تعریف میشدند:

در استاندارد جدید راه ساده تری برای تعریف متغیرهای کلاس ارائه شده است:


۶. متد FindLast برای جستجوی سریع تر در آرایه ها

اگر بخواهیم عنصری از آرایه را تحت شرایط خاصی پیدا کنیم، متدهای find و findIndex راه حل های مناسبی هستند. اما برای استفاده از این توابع با محدودیت هایی مواجه هستیم. اگر بخواهیم در یک آرایه بزرگ دنبال عنصری بگردیم که در انتهای آرایه قرار دارد، زمان بسیار زیادی را باید منتظر بمانیم:

زمانی که برای پیدا کردن این عنصر مصرف شده ۸۴ میلی ثانیه است که خیلی خیلی طولانی به حساب می آید:

اما به کمک متد جدید findLast در ES2022 پیدا کردن عنصر مورد نظر در شرایط این چنینی به شدت کاهش یافته است و میتوانیم جستجو را از انتهای ‌آرایه شروع کنیم:


با شناخت این فیچرها و استفاده از آنها، میتوانیم برنامه هایی خواناتر، تمیزتر و سریع تر بنویسیم :)

منبع


جاوااسکریپتjavascript
۳
۴
رهام رفیعی تهرانی
رهام رفیعی تهرانی
برنامه نویسی یک شغل نیست، یک هنره.
شاید از این پست‌ها خوشتان بیاید