با یک حلقهی While میتوانید تا زمانی که شرط خاصی برقرار باشد، کد را بارها اجرا کنید.
این حلقه با کلیدواژهی while نوشته میشود؛ پس از کلیدواژه، شرطی در پرانتز میآید و پس از آن یک «بلوک کد» میآید که بدنهی حلقه را در آکولاد جای میدهد.
while (condition) {
// code that is executed repeatedly as long as the condition is
// true
}
در JavaScript هم حلقهی Do-While وجود دارد. در این حلقه، شرط پس از اجرای بدنهی حلقه بررسی میشود. این ویژگی زمانی به کار میآید که شرط به ارزیابیهایی بستگی داشته باشد که در بدنه انجام میشوند.
do {
// The code here will always be executed once and then
// repeatedly while the condition is true.
} while (condition);
breakداخل بدنهی حلقه میتوانید از کلیدواژهی break استفاده کنید تا اجرای حلقه را کاملاً متوقف کنید. این کار اغلب همراه با true به عنوان شرط به کار میرود. به این ترتیب میتوانید از هر جای بدنهی حلقه کنترل کنید که حلقه چه زمانی باید متوقف شود.
const winningNumber = 7;
while (true) {
const num = readUserGuess();
if (num === winningNumber) {
break;
}
}
کلیدواژهی break را نمیتوان داخل تابعی به کار برد که درون حلقه قرار گرفته است؛ برای نمونه مستندات MDN را ببینید.
continueبرخلاف break، کلیدواژهی continue فقط اجرای تکرار جاری را متوقف میکند و به تکرار بعدی میرود. با continue اغلب لازم نیست بخشهای بزرگی از بدنهی حلقه را در یک دستور شرطی بپیچید.
let i = 0;
while (i < 100) {
i = i + 2;
if (i % 3 === 0) {
continue;
}
// The code here will only be executed when i was not divisible
// by 3 in the check above.
}
حلقهای که (بهطور نظری) تا ابد تکرار میشود، زمانی به وجود میآید که شرط حلقه همیشه برقرار باشد و در بدنهی حلقه به هیچ دستور break یا return نرسیم. در این حالت باید اجرا از بیرون متوقف شود. بسته به محیطی که چنین کدی در آن اجرا میشود، این کار بهطور خودکار انجام میشود یا به دخالت دستی نیاز دارد.
let i = 0;
while (i < 100) {
if (i % 3 === 0) {
continue;
}
i = i + 2;
}
// This loop runs forever since the variable i does not change
// anymore after it is divisible by 3 the first time.
تشخیص حلقههای بینهایت در این مثال ساده ممکن است پیشپاافتاده به نظر برسد، اما در کدهای پیچیدهتر همیشه هم آسان نیست. روش خوبی است که با دقت فکر کنید آیا شرط شما در نهایت «غلط» میشود یا اینکه به دستور break یا return شما میرسد.