بررسی عملکرد حلقه forEach در جاوا اسکریپت

توی این مقاله تلاش دارم تا روی یک حلقه forEach ، در جاوا اسکریپت بیشتر تمرکز کنم و این حلقه بیشتر بررسی کنم.

نحوه کار کردن forEach

متد forEach یک تابع فراخوانی را به عنوان ورودی می پذیرد و برای هر عنصر در آرایه ای که تکرار می شود، این عملکرد برگشتی را اجرا می کند. به عنوان مثال:

خروجی این کد به این صورت هستش:

corgis - 0
are - 1
cool - 2

اتصال کوتاه

اگر نمی دونید اتصال کوتاه چیه ، این مربوط به زمانی میشه که ما یک تکرار از یک حلقه را زود خاتمه می دیم و یا ازش عبور می کنیم. وقتی که از forEach استفاده می کنیم ، راهی برای استفاده از اتصال کوتاه وجود نداره ، که در همه موارد حلقه ما ، با توجه به اندازه آرایه خود ، یک خط زمان اجرا را تحمل می کنه. حالا سوال پیش میاد که چرا به این موضوع باید اهمیت بدیم؟فرض کنید ما یک آرایه مرتب نشده از 1 میلیارد عنصر داریم و می خوایم یک عنصر خاص داخلش پیدا کنیم.خوش شانسی زمانی اتفاق میوفته که توی اولین تکرار حلقه پیداش کنیم.اما اگه واقع بینانه به ماجرا نگاه کنیم می بینیم که این حلقه توی forEach تا آخر ادامه پیدا میکنه.پس برای همینه که میام تو جاوا اسکریپت از findIndex استفاده می کنیم.

عملکرد

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

خوانایی

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

روش هایی که با آخرین نسخه های ECMAScript منتشر شده اند ، باعث افزایش قدرت جاوا اسکریپت شده اند. اعتقاد اصلی من به استفاده از ابزار مناسب برای کار هستش. اگر شما نیاز به خواندن تعداد زیادی از عناصر در یک آرایه دارید ، شاید یک حلقه بومی ممکن است راه حل مشکل شما باشد. در غیر این صورت ، هنگام استفاده از forEach یا هر یک از روشهای آرایه ES که بعداً منتشر شد ، هیچ مسئله ای غیر از افت عملکرد جزئی مشاهده نمی کنید.

امیدوارم از این مقاله استفاده کامل برده باشید و تونسته باشم اطلاعات مفیدی در اختیار شما قرار بدم.

ممنون از توجهتون :)