فرمان‌های break و continue ECMAScript

دستورات break و continue کنترل دقیق‌تری بر اجرای کد در حلقه‌ها ارائه می‌دهند.

تفاوت بین دستورات break و continue

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

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

مثال:

var iNum = 0;
for (var i=1; i<10; i++) {
  if (i % 5 == 0) {
    break;
  }
  iNum++;
}
alert(iNum);	// خروجی "4"

در این کد، حلقه for از 1 تا 10 متغیر i را تکرار می‌کند. در بدنه حلقه، دستور if (استفاده از علامت درصد) بررسی می‌کند که آیا مقدار i قابل تقسیم بر 5 است یا خیر. اگر قابل تقسیم باشد، دستور break اجرا می‌شود. alert "4" را نمایش می‌دهد، که تعداد دفعات اجرای حلقه قبل از خروج از حلقه است.

اگر دستور continue به جای دستور break در این مثال استفاده شود، نتیجه متفاوت خواهد بود:

var iNum = 0;
for (var i=1; i<10; i++) {
  if (i % 5 == 0) {
    continue;
  }
  iNum++;
}
alert(iNum);	// خروجی "8"

در اینجا،alert تعداد دفعات اجرای حلقه را نمایش می‌دهد "8"، که تعداد کل دفعات ممکن است 9 باشد، اما وقتی مقدار i برابر 5 است، دستور continue اجرا می‌شود که حلقه را از عبارت iNum++ می‌پردازد و به ابتدای حلقه برمی‌گردد.

با عبارت‌های برچسب‌دار استفاده شوند

عبارت‌های break و continue می‌توانند با عبارت‌های برچسب‌دار ترکیب شوند تا به مکان خاصی در کد بازگردند.

معمولاً، وقتی یک حلقه درون حلقه دیگری قرار دارد، به این شکل عمل می‌شود، به عنوان مثال:

var iNum = 0;
outermost:
for (var i=0; i<10; i++) {
  for (var j=0; j<10; j++) {
    if (i == 5 && j == 5) {
    break outermost;
  }
  iNum++;
  }
}
alert(iNum);	// خروجی "55"

در مثال بالا، برچسب outermost نشان‌دهنده اولین عبارت for است. به طور معمول، هر عبارت for 10 بار اجرا می‌شود، این意味着 iNum++ به طور معمول 100 بار اجرا خواهد شد و در پایان، مقدار iNum باید برابر 100 باشد. در اینجا، عبارت break یک پارامتر دارد، یعنی برچسبی که پس از توقف حلقه باید به آن جابجا شود. بنابراین، عبارت break نه تنها می‌تواند از حلقه‌های for داخلی (یعنی عبارت‌های استفاده شده با متغیر j) خارج شود، بلکه می‌تواند از حلقه‌های for خارجی (یعنی عبارت‌های استفاده شده با متغیر i) نیز خارج شود. بنابراین، مقدار نهایی iNum 55 است، زیرا وقتی مقدار i و j برابر 5 هستند، حلقه متوقف می‌شود.

می‌توان به همان روش از عبارت continue استفاده کرد:

var iNum = 0;
outermost:
for (var i=0; i<10; i++) {
  for (var j=0; j<10; j++) {
    if (i == 5 && j == 5) {
    continue outermost;
  }
  iNum++;
  }
}
alert(iNum);	// خروجی "95"

در مثال بالا، عبارت continue باعث ادامه حلقه می‌شود، نه تنها حلقه‌های داخلی، بلکه حلقه‌های خارجی نیز. وقتی j برابر 5 است، این به این معناست که حلقه داخلی 5 بار تکرار خواهد شد و مقدار iNum برابر 95 خواهد شد.

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

توجه:اگر می‌خواهید بدانید که عبارت برچسب‌دار چیست، لطفاً بخوانید فرمان‌های برچسب ECMAScript این بخش.