ای سی ایم اسکریپت آرگومنٹس اوبجیکٹ

اشیای arguments

در کد تابع، از اشیای خاص arguments استفاده می‌کنند، توسعه‌دهندگاننیازی به اشاره دقیق به نام پارامترها نیست، به آنها دسترسی خواهید داشت.

مثلاً، در تابع sayHi()، اولین پارامتر message است. می‌توانید این مقدار را با استفاده از arguments[0] نیز دسترسی پیدا کنید، یعنی مقدار اولین پارامتر (اولین پارامتر در مکان 0، دومین پارامتر در مکان 1 و غیره).

بنابراین، نیازی به نام‌گذاری مشخصی برای پارامترها نیست تا بتوانید تابع را بازنویسی کنید:

فانکشن sayHi() {
  اگر (arguments[0] == "bye") {
    return;
  }
  alert(arguments[0]);
}

检测参数个数

还可以用 arguments 对象检测函数的参数个数,引用属性 arguments.length 即可。

下面的代码将输出每次调用函数使用的参数个数:

function howManyArgs() {
  alert(arguments.length);
}
howManyArgs("string", 45);
howManyArgs();
howManyArgs(12);

یہ کوئی بھی کوئی بھی کوئی بھی کوئی بھی آؤٹ پتا '2'، '0' اور '1' دکھائیگا。

تعلیمات:دیگر پروگرامنگ زبانوں کے برخلاف، ایک ایمس پارامتروں کی تعداد کو جانچنا نہیں کرسکتا جو فنکشن کو منتقل کیا جاتا ہے یا نہیں جو فنکشن کی تعریف کی تعداد کے برابر ہو یا نہیں ہو۔ طلبکار کے تعریف شدہ فنکشن کسی بھی تعداد کا پارامتر قبول کرسکتا ہیں (بنا کہ اس کا دکھانے کا مطلب یہ ہو کہ نیتسکائیپ کے مطابق، زیادہ سے زیادہ 255 پارامتر قبول کرسکتا ہے)، جس سے کوئی بھی غلطی نہیں آئیگی۔ کوئی بھی چھوئی پارامتر undefined کے طور پر فنکشن کو منتقل کی جائیگی، اضافی پارامتروں کو نادید قرار دیا جائے گا。

فارمائنکسی کی منقوذ کاری

فارمائنکسی کا استعمال سے فنکشن کی پارامتروں کی تعداد کو جانچنا، یعنی فنکشن کی ری لاود کو منقوذ کرسکتا ہے:

function doAdd() {
  if(arguments.length == 1) {
    alert(arguments[0] + 5);
  } else if(arguments.length == 2) {
    alert(arguments[0] + arguments[1]);
  }
}
doAdd(10); // آؤٹ پتا '15'
doAdd(40, 20); // آؤٹ پتا '60'

جب کوئی فاریبل ایک ہی پارامتر رکھا گیا ہو، تو doAdd() فنکشن پارامتر کو 5 کا اضافہ کرتا ہے۔ اگر دو پارامتر موجود ہیں تو ان دونوں پارامتر کو جمع کیا جائے گا اور ان کا مجموعہ واپس کیا جائے گا۔ لہذا، doAdd(10) کا آؤٹ پتا '15' اور doAdd(40, 20) کا آؤٹ پتا '60' ہوگا。

اگرچ کہ بہتر نہیں ہے جیسا کہ ری لاود، لیکن یہ ایک ایمس کی اس محدودیت سے بچنے کے لئے کافی ہے。