سلام دوستان! می‌خوایم با یک حلقه کوتاه‌تر و خواناتر به اسم for...of آشنا بشیم که برای حلقه زدن روی مقادیر قابل پیمایش به کار میره.

توی این قسمت یاد می‌گیریم که:

 

حلقه for...of چیه؟ 🤔

با این حلقه می‌تونیم روی اعضای مقادیری که قابل پیمایش هستن مثل آرایه‌ها و رشته‌ها حلقه بزنیم. ساختار این حلقه به این صورت هست:

const numbers = [1, 2, 3];

for (const num of numbers) {
  alert(num);
}

چیزی که بعد از of قرار می‌گیره یک مقدار قابل پیمایش باید باشه که توی این مثال آرایهٔ numbers هست. حلقه روی اعضای این مقدار پیمایش انجام میده. برای دسترسی به عضوی که داره پیمایش روی اون انجام می‌گیره، باید یک متغیر (با اسم دلخواه) درست می‌کنیم که قبل از of قرار می‌گیره. توی این مثال اسم این متغیر رو گذاشتیم num. توی هر پیمایش یک متغیر اختصاصی به اسم num درست میشه که شامل مقدار عضوی هست که پیمایش داره روی اون انجام می‌گیره. این متغیر توی بدنه حلقه در دسترس هست و می‌تونیم از اون استفاده کنیم.

اگه بخوایم همین مثال رو با حلقه for معمولی بنویسیم:

const numbers = [1, 2, 3];

for (let i = 0; i < numbers.length; i++) {
  alert(numbers[i]);
}

می‌بینیم که چقدر کدنویسی اضافه باید انجام بدیم که باعث میشه خوانایی و تمیزی کدمون پایین بیاد.

 

کلمه‌های کلیدی break و continue توی این حلقه کارایی مشابه با بقیه حلقه‌ها داره:

const numbers = [1, 2, 3, 4, 5, 6];

for (const num of numbers) {
  if (num % 2 === 1) {
    <<continue;>>
  }

  alert(num);

  if (num >= 4) {
    <<break;>>
  }
}

 

مقدار قابل پیمایش یعنی چی؟

به مقادیری گفته میشه که از یک سری استانداردها و پروتکل‌ها پیروی می‌کنن تا بتونیم روی اعضای اونها به‌ترتیب پیمایش کنیم و به اونها دسترسی داشته باشیم. به پروتکلی که این مقادیر پیروی می‌کنن گفته میشه Iterator Protocol. مقادیری می‌تونن توی حلقه for...of قرار بگیرن که از این پروتکل پیروی کنن.