javascriptfor loopحلقه for در جاوااسکریپت
حلقه for در جاوااسکریپت را با جمع قیمتها یاد بگیرید؛ سه بخش آغاز، شرط و تغییر شمارنده و خطای رایج i <= length را دقیق بررسی کنید.
مفهوم به زبان ساده
حلقه for یک کار را با کنترل روشن تعداد یا محدودهٔ تکرار انجام میدهد. داخل پرانتز سه بخش جدا با ; داریم: مقداردهی آغاز، شرط ادامه و تغییر پس از هر دور. بخش آغاز فقط یکبار اجرا میشود؛ شرط پیش از هر دور بررسی میشود؛ پس از بدنه، تغییر شمارنده انجام میشود و دوباره نوبت شرط است.
در مثال، i از صفر شروع میشود تا با اندیس نخست #array هماهنگ باشد. شرط i < prices.length اجازه میدهد فقط اندیسهای موجود این آرایهٔ متراکم خوانده شوند. پس از هر دور، i += 1 شمارنده را جلو میبرد. total جمع مبلغهای دیدهشده را نگه میدارد؛ بیرون حلقه ساخته شده تا نتیجه پس از آخرین دور هم در دسترس باشد. دادههای نمونه معتبر و عددیاند.
اگر آرایه خالی باشد، شرط نخست نادرست میشود و بدنه هیچبار اجرا نمیشود؛ مجموع صفر باقی میماند. این حالت را هم آزمایش کنید. استفاده از <= بهجای < یک بار اضافی به خانهٔ بیرون آرایه میرسد و در جمع عددی ممکن است NaN بسازد. break حلقه را زودتر پایان میدهد و continue ادامهٔ بدنهٔ همان دور را کنار میگذارد؛ در for معمولی پس از continue بخش تغییر شمارنده هنوز اجرا میشود. اگر فقط خود مقدارها را لازم دارید و اندیس مهم نیست، #for-of گزینهٔ سادهتری است.
کجا به کار میآید؟
- پیمایش آرایه وقتی اندیس و مقدار هر دو لازماند
- اجرای تعداد مشخصی تمرین یا ساختن ردیفهای شمارهدار
از تعریف تا یک مثال واقعی
const prices = [120000, 80000, 50000];
let total = 0;
for (let i = 0; i < prices.length; i += 1) {
total += prices[i];
console.log(i);
}
console.log(total);
0 1 2 250000
این مثال چطور کار میکند؟
i با صفر و total با صفر مقداردهی میشوند.
در سه دور، i بهترتیب صفر، یک و دو است و قیمت همان خانه به مجموع اضافه میشود.
پس از دور سوم، i برابر ۳ میشود؛ شرط 3 < 3 نادرست است.
حلقه تمام میشود و مجموع ۲۵۰۰۰۰ چاپ میشود.
اشتباه رایج
برای اندیسهای این آرایه i < length درست است؛ i <= length به یک خانهٔ اضافه میرسد. حذف تغییر شمارنده هم ممکن است حلقهای بسازد که پایان نمییابد و صفحه را مشغول نگه میدارد.
این را به خاطر بسپارید
آغاز، شرط و تغییر شمارنده را جدا ردگیری کنید؛ مرز آخرین اندیس با طول آرایه یکی نیست.