همانطور که میدانید، در نسخههای جدید جاوا اسکریپت میتوان برروی آرایهها به شکل زیر forEach نوشت تا کارمان نسبت به for سادهتر شود:
var numbers = [ 1, 2, 5, 56, 26, 20, 74, 20, 29, 65, 85 ]; numbers.forEach(function(number, index) { console.log('Number Is ', number); });
اما حالا فرض کنید قصد داریم تا شرطی را داخل حلقه forEach بنویسیم و در صورت درست بودن آن شرط، حلقه break شود و ادامه پیدا نکند. اما متاسفانه چنین چیزی در forEach این مدلی امکان پذیر نیست! پس چه باید کرد؟!
راه حل استفاده از یک Exception است! بله! به صورت زیر:
var numbers = [ 1, 2, 5, 56, 26, 20, 74, 20, 29, 65, 85 ]; var BreakException = {}; try { numbers.forEach(function(number, index) { console.log('Number Is ', number); if (index === 5) throw BreakException; }); } catch (e) { if (e === BreakException) { console.log('Breaked!'); } else { throw e; } }
ابتدا یک آبجکت جدیدی به اسم BreakException یا هر اسم دلخواهی ایجاد کردیم که چیزی داخل آن وجود ندارد. سپس داخل حلقه، در صورتی که عدد برابر 5 شد، یک خطای جدیدی پرتاب کردهایم و محتوای این خطا همان آبحکتی است که خودمان ایجاد کردیم! در نهایت کل حلقه را داخل یک try قرار دادهایم. در catch نیز بررسی کردهایم که اگر خطای تولید شده همان آبجکت BreakException نبود، بنابراین یک خطای دیگری رخ داده است!
میتوانیم اطلاعاتی که نیاز داریم را نیز به داخل آبجکت پرتاب شده تزریق کنیم! مثلا اینکه در کدام ایندکس این بریک رخ داده است و …
نظرات ثبت شده بدون دیدگاه