۳ نکته مهم حلقه‌های forEach در جاوااسکریپت

شاید واقعا فکر کنید که همه چیز را در ارتباط با حلقه‌های forEach در جاوااسکریپت می‌دانید. خب منم همین فکر را داشتم تا اینکه کلمات کلیدی مانند break، return و continue را در یک حلقه مشاهده کردم.

امروز قصد دارم به عنوان یک نکته کوچک به شما در ارتباط با این سه کلمه کلیدی در یک حلقه توضیحاتی ارائه دهم.

۱. کلمه کلیدی return حلقه را متوقف نمی‌کند

فکر می‌کنید که حلقه زیر اعداد ۱ و ۲ را چاپ کرده و متوقف می‌شود؟

۳ نکته مهم حلقه‌های forEach در جاوااسکریپت

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

دلیل این اتفاق در جاوااسکریپت این است که ما یک تابع callback را در داخل تابع forEach قرار داده‌ایم که به این معناست درست مانند یک تابع عادی برخورد کرده و روی تمام المان‌ها اجرا می‌شود. بنابراین نمی‌توان حلقه را روی یک المان خاص نگه‌داشت.

مطابق با تعریفی که MDN ارائه کرده:

هیچ راهی برای متوقف کردن یک حلقه forEach بجز قرار گرفتن یک استثنا در آن نیست. اگر قصد دارید که در حلقه قابلیت break داشته باشید نیاز است که از یک ساختار دیگر بجز forEach استفاده کنید.

اگر همین حالت را به شکل دیگری پیاده‌سازی کنیم:

۳ نکته مهم حلقه‌های forEach در جاوااسکریپت

باز هم کلمه کلیدی return کار خاصی را انجام نمی‌دهد چرا که ما یک تابع را روی هر المان در هر تکرار اعمال کرده‌ایم.

۲. شما نمی‌توانید break کنید

نظرتان در مورد کدهای زیر چیست؟ آیا break باعث متوقف کردن forEach می‌شود؟

۳ نکته مهم حلقه‌های forEach در جاوااسکریپت

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

راه حل؟

از یک حلقه عادی for استفاده کنید. اینگونه کسی با کدهای شما مشکلی ندارد:

۳ نکته مهم حلقه‌های forEach در جاوااسکریپت

۳. در ارتباط با کلمه کلیدی continue چه؟

انتظار دارید که کدهای زیر مقدار ۲ را نادیده گرفته و بقیه آرایه را چاپ کند؟

۳ نکته مهم حلقه‌های forEach در جاوااسکریپت

خیر، چرا که درست مانند break دستور continue به این شکل متعلق به حلقه forEach نیست.

راه‌حل این حالت نیز درست مانند گزینه قبلی است: از یک حلقه ساده for استفاده کنید:

۳ نکته مهم حلقه‌های forEach در جاوااسکریپت

این هم از مطلب کوتاه ما، امیدوارم نکته‌های ماجرا را گرفته باشید.

Sana-WEB

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *