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 اجرا میشه. این دستور مستقیم به حلقه بزرگِ بیرونی فرمان ایست میده و برنامه کلاً از این مارپیچِ تو در تو خارج میشه.
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://developer.mozilla.org/en-US/docs/Web/JavaScript