javascriptdo...whileحلقه do...while در جاوااسکریپت
حلقه do...while در جاوااسکریپت شرط را بعد از بدنه بررسی میکند؛ اجرای حداقل یکباره، مسیر تغییر وضعیت و تفاوت آن با while را با کد ببینید.
مفهوم به زبان ساده
در بعضی فرایندها، نخست باید یک مرحله انجام شود و سپس دربارهٔ تکرار آن تصمیم بگیریم. do...while همین ترتیب را بیان میکند: بدنه اجرا میشود و بعد شرط بررسی میشود. بنابراین حتی اگر شرط از همان ابتدا نادرست باشد، بدنه یک بار اجرا خواهد شد. این تفاوت اصلی آن با while معمولی است که شرط را پیش از نخستین دور میسنجد.
در مثال، شمارهٔ صفحه از یک آغاز میشود. ابتدا پیام آن صفحه چاپ و سپس شماره بیشتر میشود؛ اگر هنوز در محدودهٔ دو صفحه باشیم، دور بعد اجرا میشود. نمونهٔ دوم با شرط false نشان میدهد یک اجرای اولیه همچنان رخ میدهد.
مانند هر حلقه، باید مشخص باشد چه تغییری به پایان تکرار منجر میشود. قرار دادن continue در بدنه، کنترل را به بررسی شرط میبرد؛ اگر تغییر وضعیت لازم پیش از آن انجام نشده باشد، رفتار را دوباره بررسی کنید. پس از پرانتز شرط در این ساختار، سمیکالن را بنویسید. برای تمرین، حد صفحه را صفر کنید و توضیح دهید چرا هنوز یک پیام چاپ میشود. اگر نیاز محصول اجرای صفر یا چند مرحله است، while یا for میتواند منظور را دقیقتر بیان کند.
کجا به کار میآید؟
- مدلکردن مرحلهای که باید پیش از تصمیم تکرار انجام شود
- فهم تفاوت حلقهٔ پیشآزمون و پسآزمون در ردگیری کد
از تعریف تا یک مثال واقعی
let page = 1;
do {
console.log('صفحه ' + page);
page += 1;
} while (page <= 2);
let once = 0;
do {
once += 1;
} while (false);
console.log(once);
صفحه 1 صفحه 2 1
این مثال چطور کار میکند؟
بدنه با page برابر یک، پیش از بررسی شرط اجرا میشود.
پس از افزایش شماره، شرط اجازهٔ دور دوم را میدهد.
بعد از صفحهٔ دو، شماره سه میشود و شرط نادرست است.
در حلقهٔ دوم، شرط false مانع اجرای نخستین بدنه نمیشود.
اشتباه رایج
do...while را وقتی اجرای صفر بار لازم است، بیبررسی انتخاب نکنید. شرط false در پایان، کار انجامشدهٔ دور نخست را برنمیگرداند.
این را به خاطر بسپارید
در do...while ابتدا بدنه و سپس شرط اجرا میشود؛ حداقل یک دور بخشی از قرارداد این ساختار است.