break و continue
حلقه میتواند تا آخر هر دور را کامل کند — مگر خودتان مسیرش را عوض کنید. گاهی جواب را پیدا کردهاید و میخواهید متوقف شوید. گاهی یک آیتم بیارزش است و میخواهید ردش کنید، بعد ادامه دهید. break همان لحظه از حلقه بیرون میآید. continue به دور بعدی میپرد. همان حلقههایی که بلدیم؛ دو کلمهٔ کوچک مسیر پرواز را عوض میکنند.
break چه کار میکند؟
نزدیکترین حلقه را همین حالا تمام میکند. دورهای بعدی اجرا نمیشوند. هر چه بعد از حلقه در اسکریپت باشد هنوز اجرا میشود. فکر کنید: «کارم تمام شد — برو بیرون.» وقتی اولین تطبیق را میجویید و بقیهٔ فهرست لازم نیست، همین الگو رایج است.
break در برابر continue
📊 هدایت حلقه وسط راه
| کلیدواژه | اثر | کی جور است |
|---|---|---|
break |
الان از حلقه بیرون برو | اولین تطبیق پیدا شد؛ دیگر صبر نکن |
continue |
بقیهٔ این دور را رد کن، دور بعد را شروع کن | یک آیتم بد را نادیده بگیر؛ پیمایش را نگه دار |
| هیچکدام | هر دور بدنه را کامل اجرا میکند | همهٔ آیتمها یکسان باید پردازش شوند |
| بعد از حلقه | کد پایین حلقه هنوز اجرا میشود | break فقط از حلقه خارج میشود، نه از کل اسکریپت |
وقتی دورهای بعدی بیفایدهاند break را بردارید. وقتی یک دور باید ساکت باشد ولی پیمایش باید ادامه یابد، continue را. جایشان را عوض نکنید — باگ «تقریباً درست» است و دیر پیدا میشود.
const nums = [2, 4, 7, 8];
let found = null;
for (let i = 0; i < nums.length; i++) {
if (nums[i] === 7) {
found = nums[i];
break;
}
}
console.log(found);
وقتی تطبیق پیدا شد متوقف شوید
حلقه اول 2 را میبیند، بعد 4، بعد 7. روی 7 مقدار را ذخیره میکند و break میزند. 8 دیگر اجرا نمیشود. found میشود 7. بدون break حلقه بعد از دانستن جواب هم راه میرفت.
for (let i = 1; i <= 5; i++) {
if (i % 2 === 0) {
continue;
}
console.log(i);
}
یک دور را رد کنید و ادامه دهید
وقتی i زوج است، continue به i بعدی میپرد. خط console.log برای آن دورها اجرا نمیشود. میبینید 1، 3، 5. حلقه تمام نشده — فقط از عددهای زوج گذشته است.
let n = 1;
while (n < 20) {
if (n === 5) {
break;
}
console.log(n);
n = n + 1;
}
while را زود ترک کنید
while تا وقتی n < 20 ادامه میداد. وقتی n === 5 شد، break خارج میکند. چاپ شده: 1 تا 4. این الگو برای «تا یک قاعدهٔ توقف پیش برو، بعد برو بیرون» مناسب است — بدون تمام کردن همهٔ دورهای ممکن.
const colors = ["red", "skip", "blue"];
for (const c of colors) {
if (c === "skip") {
continue;
}
console.log(c);
}
در for...of بعضی مقدارها را رد کنید
for...of همچنان روی مقدارها راه میرود. continue مقدار "skip" را نادیده میگیرد و red بعد blue را چاپ میکند. ایدهٔ هدایت در for و while و for...of یکی است — فقط نزدیکترین حلقه.
const parts = ["A", "x", "B", "x", "C"];
let msg = "";
for (const p of parts) {
if (p === "x") {
continue;
}
msg = msg + p;
}
console.log(msg);
موقع چسباندن فیلتر کنید
هر "x" رد میشود؛ حرفها اضافه میشوند. نتیجه ABC است. همان عادت چسباندن درسهای قبلی حلقه — continue دروازهٔ فیلتر داخل پیمایش است.
break و continue را روی صفحه نشان دهید
روی یک فهرست کوتاه راه بروید، با continue یک برچسب را رد کنید، بعد از یک نشانگر با break زود بایستید، نتیجه را در صفحه بنویسید.
<!DOCTYPE html>
<html>
<head>
<title>break / continue — page</title>
</head>
<body>
<p id="out">…</p>
<script>
const items = ["a", "skip", "b", "stop", "c"];
let line = "";
for (const item of items) {
if (item === "skip") {
continue;
}
if (item === "stop") {
break;
}
line = line + item + " ";
}
let box = document.getElementById("out");
box.textContent = "kept=" + line.trim();
</script>
</body>
</html>
صفحه نشان میدهد kept=a b. "skip" نادیده گرفته شد؛ "stop" قبل از "c" حلقه را بست. آرایه را عوض کنید، تازه کنید، خط جدید را بخوانید. درس بعد تابعها را شروع میکند — بلوکهای کاری که با اسم صدا میزنید.
خودتان امتحان کنید
- در یک
forروی[3, 9, 1]وقتی مقدار9شدbreakبزنید و ذخیره کنید. - فقط فردهای
1تا6را باcontinueروی زوجها چاپ کنید. - در یک
whileوقتی شمارنده به3رسید باbreakبایستید. - با
for...ofروی["ok", "no", "ok"]از"no"باcontinueبگذرید. ["1", "-", "2"]را با رد کردن"-"به12بچسبانید.- در دموی HTML فقط آرایه را عوض کنید، تازه کنید، و
kept=را بخوانید.
اشتباههای رایج
- فکر کردن که
continueکل حلقه را تمام میکند (آن کارbreakاست) - گذاشتن کار بیشتر بعد از
breakدر همان دور — هرگز اجرا نمیشود - در
whileزدنcontinueبدون بهروز کردن شمارنده قبلش — خطر حلقهٔ بیپایان - استفاده از
breakوقتی فقط میخواستید یک آیتم را رد کنید - انتظار اینکه
breakکل اسکریپت را ترک کند — فقط نزدیکترین حلقه را ترک میکند
خلاصه
break— الان از حلقه بیرون برو؛ دورهای بعدی اجرا نمیشوندcontinue— بقیهٔ همین دور را رد کن؛ دور بعد را شروع کن- در
forوwhileوfor...ofکار میکند - الگوی جستجو اغلب
breakمیخواهد؛ الگوی فیلتر اغلبcontinue - بعد از
breakکد پایین حلقه هنوز اجرا میشود - بعدی: تابعها — یک بلوک کار را نام بگذارید و صدا بزنید
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود