شما اینجا هستید

دستور for...in متغیر مشخصی را بر روی ویژگی های یک شی تکرار میکند.

برای هر ویژگی مجزا،جاوااسکریپت دستورات خاصی را اجرا میکند.

دستور for...in به شکل زیر نوشته میشود:

for (variable in object) {
 statements
}

variable

یک نام ویژگی متفاوت که به variable در هر تکرار داده میشود.

Object

شی دارای ویژگیهای قابل شمارش.

یک حلقه for...in فقط بر روی ویژگیهای قابل شمارش تکرار میگردد. اشیای ایجاد شده در سازنده مانند آرایه و شی دارای ویژگی غیر قابل شمارش به ارث برده شده از شی هستند. حلقه بر روی همه ویژگیهای قابل شمارش شی و شی ارث برده شده از سازنده نمونه اولیه تکرار میگردد.

ویژگیهای حذف شده، افزوده شده یا ویرایش شده

حلقه for...in بر روی ویژگیهای یک شی در جهت دلخواه تکرار میگردد. اگر یک ویژگی درون یک تکرار ویرایش گردد و سپس در زمان دیگری دوباره دیده شود،‌ مقدار آن در حلقه مقداری خواهد بود که در لحضه آخر بوده. اگر یک ویژگی پیش از اینکه مشاهده گردد حذف شود دیگر قابل مشاهده نخواهد بود. ویژگیهای افزوده شده به شی بر روی هر تکرار ممکن است دیده شود یا از قلم بیفتد. به طور کلی بهتر است که در هنگام تکرار ویژگی های شی را حذف، ویرایش یا اضافه نکنیم. هیچ تضمینی برای مشاهده ویژگی افزوده شده، ویرایش شده یا حذف شده وجود ندارد.

تکرار آرایه و for...in

نکته: for…in نباید در آرایه هایی که ترتیب اندیسها مهم هستند استفاده گردد.

اندیسهای آرایه تنها ویژگی قابل شمارش با نامهای صحیح هستند. هیچ تضمینی برای اینکه for...in اندیسها را در یک ترتیب مشخص شده بازگرداند نیست.

برای اینکه ترتیب تکرار وابسته به نحوه پیاده سازی است، ممکن است در تکرار بر روی آرایه، عناصر آن به ترتیب دیده نشوند. بنابراین بهتر است هنگامی که در تکرار بر روی آرایه ترتیب دسترسی مهم است از حلقه for با اندیس شماره ای (‌یا ()Array.prototype.forEach یا حلقه for...of ) استفاده بکنیم.

مثال

تابع زیر یک شی و نام شی را به عنوان آرگومان دریافت میکند. سپس بر روی همه ویژگیهای شی تکرار میشود و یک رشته را که شامل نام ویژگیها و مقادیر آنها است را برمیگرداند.

function dump_props(obj, obj_name) {
  var result = "";
  for (var i in obj) {
    result += obj_name + "." + i + " = " + obj[i] + "<br>";
  }
  result += "<hr>";
  return result;
}

مثلا برای شی اتومبیل با ویژگیهای make و model نتیجه زیر نمایش داده میشود:

car.make = Ford
car.model = Mustang
یک مثال دیگر
var obj = {a:1, b:2, c:3};
    
for (var prop in obj) {
  console.log("obj." + prop + " = " + obj[prop]);
}

// Output:
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"

 

افزودن دیدگاه جدید

دیدگاه

  • تگ‌های HTML مجاز: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • خطوط و پاراگراف‌ها بطور خودکار اعمال می‌شوند.
  • نشانی صفحه‌ها وب و پست الکترونیک بصورت خودکار به پیوند تبدیل می‌شوند.

Plain text

  • تگ‌های HTML مجاز نیستند.
  • نشانی صفحه‌ها وب و پست الکترونیک بصورت خودکار به پیوند تبدیل می‌شوند.
  • خطوط و پاراگراف‌ها بطور خودکار اعمال می‌شوند.
كد امنيتي
این پرسش برای جلوگیری از ارسال اسپمهای اتوماتیک است.