دستور break (ترمز و خروج اضطراری)
از دستور break برای متوقف کردن ناگهانی حلقهها (for ،while ،do...while)، دستور شرطی switch یا خارج شدن از یک دستور برچسبدار (Labeled statement) استفاده میشه.
به طور کلی دو جور میتونی از break استفاده کنی:
-
بدون برچسب (
break;): این حالت معمولی هست و جاوااسکریپت به محض دیدنش، داخلیترین حلقهای که توش قرار داره رو فوراً متوقف میکنه و ازش میپره بیرون. -
با برچسب (
break label;): این حالت پیشرفته است و دقیقاً همان حلقه یا دستوری رو متوقف میکنه که اسمش (برچسبش) رو جلوش نوشتی.
ساختار ظاهری این دستور به این صورت هست:
break;
break اسم_برچسب;
مثال اول: استفاده معمولی از break
فرض کن یک آرایه (لیست) داری و میخوای توش بگردی تا یک مقدار خاص (theValue) رو پیدا کنی. به محض اینکه پیدایش کردی، دیگه نیازی نیست بقیه لیست رو بگردی و الکی وقت سیستم رو بگیری؛ پس حلقه رو متوقف میکنی:
for (let i = 0; i < a.length; i++) {
if (a[i] === theValue) {
break; // مقدار پیدا شد! همینجا حلقه رو تموم کن و بیا بیرون.
}
}
مثال دوم: ترمز با استفاده از برچسب (شکستن حلقه بیرونی)
وقتی چندتا حلقه تو در تو داری، اگر از کلمه break خالی استفاده کنی، فقط حلقه داخلی متوقف میشه و حلقه بیرونی همچنان به کارش ادامه میده. اما با کمک برچسب، میتونی از داخلِ داخلیترین حلقه، کلِ حلقهها رو یکجا متوقف کنی!
به این مثال جذاب نگاه کن:
let x = 0;
let z = 0;
// اینجا روی حلقه بیرونی اسم یا برچسب میگذاریم:
labelCancelLoops: while (true) {
console.log("حلقه بیرونی:", x);
x += 1;
z = 1;
while (true) {
console.log("حلقه داخلی:", z);
z += 1;
// اگر هر دو متغیر به عدد ۱۰ رسیدند:
if (z === 10 && x === 10) {
break labelCancelLoops; // کل حلقهها رو یکجا متوقف کن و بکش بیرون!
} else if (z === 10) {
break; // فقط حلقه داخلی رو متوقف میکنه و حلقه بیرونی دوباره میچرخه.
}
}
}
توی این کد چه اتفاقی افتاد؟
-
وقتی
zبه ۱۰ میرسه اماxهنوز ۱۰ نشده، شرط دوم یعنیelse if (z === 10)اجرا میشه. اینbreakچون برچسب نداره، فقط حلقه داخلی رو ترمز میزنه. در نتیجه کنترل کد برمیگرده به حلقه بیرونی وxیک واحد اضافه میشه. -
اما به محض اینکه هم
zو همxبا هم ۱۰ میشن، دستورbreak labelCancelLoopsاجرا میشه. این دستور مستقیم به حلقه بزرگِ بیرونی فرمان ایست میده و برنامه کلاً از این مارپیچِ تو در تو خارج میشه.
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: منبع مستندات