continue (رد شدن و پرش به دور بعد)دستور continue برای اینه که به جاوااسکریپت بگی: «بیخیالِ بقیه کدهای این دور از حلقه شو، ازشون رد شو و فوراً برو سراغ دور بعدی!». از این دستور میتونی توی حلقههای for ،while ،do...while یا همراه با یک برچسب (Label) استفاده کنی.
تفاوت اصلی continue با break در اینه که بریک کل حلقه رو یکجا تعطیل میکنه، اما کانتینیو فقط دورِ فعلی رو نصفه کاره رها میکنه و حلقه همچنان به چرخشش ادامه میده.
توی حلقه while: کد مستقیم میپره بالا تا دوباره شرط رو چک کنه.
توی حلقه for: کد مستقیم میپره روی بخش گام حرکت (مثل ++i).
ساختار ظاهری این دستور به این صورت هست:
continue;
continue اسم_برچسب;
continueبه این حلقه while نگاه کن؛ میخوایم اعداد ۱ تا ۵ رو با هم جمع کنیم، اما عمداً میخوایم از عدد ۳ سرنوشتسازی کنیم و حسابش نکنیم:
let i = 0;
let n = 0;
while (i < 5) {
i++;
if (i === 3) {
continue; // به عدد ۳ که رسیدی، بقیه خطهای پایین رو اجرا نکن و برو دور بعد!
}
n += i;
console.log(n);
}
// خروجی در کنسول: 1, 3, 7, 12
چه اتفاقی افتاد؟ وقتی i برابر با ۳ میشه، شرطِ if برقرار میشه و دستور continue اجرا میشه. در نتیجه، جاوااسکریپت خطهای n += i و console.log رو برای عدد ۳ نادیده میگیره و سریع میپره بالای حلقه برای بررسی دور بعدی (i میشه ۴).
اگر این
continueرو کامنت کنی و نگذاریش، همه اعداد (۱ تا ۵) با هم جمع میشن و خروجی تو به ترتیب1, 3, 6, 10, 15میشه.
وقتی حلقههای تو در تو داری، به صورت پیشفرض کلمه continue فقط روی همان حلقه داخلی که توش قرار داره تاثیر میگذاره. اما با کمک برچسب، میتونی از داخل حلقه داخلی، به حلقه بیرونی فرمانِ پرش به دور بعد رو بدی!
به این مثالِ تو در تو نگاه کن:
let i = 0;
let j = 10;
checkIandJ: while (i < 4) {
console.log(i);
i += 1;
checkJ: while (j > 4) {
console.log(j);
j -= 1;
if (j % 2 === 0) {
continue; // این کانتینیو بدون برچسب است، پس فقط حلقه داخلی (checkJ) رو به دور بعد میبره
}
console.log(j, "یک عدد فرد است.");
}
console.log("i =", i);
console.log("j =", j);
}
اینجا کلمه continue بدون برچسب نوشته شده. پس هر بار که عدد j زوج باشه (j % 2 === 0)، از خطِ "یک عدد فرد است" رد میشه و میره سراغ دور بعدیِ حلقه داخلی (checkJ).
وقتی حلقه داخلی به طور کامل تموم شد (یعنی شرط j > 4 غلط شد)، کدهای باقیمانده حلقه بیرونی اجرا میشن و مقدار نهایی i و j چاپ میشه. سپس حلقه بیرونی (checkIandJ) وارد دور بعدی میشه.
حالا یک فرض جذاب: اگر به جای continue; خالی، مینوشتیم continue checkIandJ; چه میشد؟ تفاوت اینجا بود که به محض زوج شدنِ j، برنامه کلاً حلقه داخلی رو رها میکرد و مستقیم میپرید به بالاترین نقطه حلقه بیرونی (checkIandJ) تا دور جدیدِ متغیر i رو شروع کنه!
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://developer.mozilla.org/en-US/docs/Web/JavaScript