پارامتر توابع

از موتو کد، دانشنامهٔ برنامه‌نویسی

یک تابع در جاوا اسکریپت هیچ گونه بررسی‌ای روی مقادیر پارامترها یا function (آرگومان‌ها) تابع انجام نمی‌دهد.[۱]

پارامترها و آرگومان های تابع

در فصل‌های قبلی این آموزش شما یادگرفتید که توابع پارامترهایی دارند:

function functionName(parameter1, parameter2, parameter3) {
  // code to be executed
}

پارامتر‌های تابع نام‌هایی هستند که در هنگام تعریف تابع لیست می‌شوند.

آرگومان‌های تابع، مقادیر واقعی‌ای هستند که به تابع پاس داده (توسط تابع دریافت) می‌شوند.

قوانین پارامترها

تعریف تابع در جاوا اسکریپت نوع داده پارامترهای تابع را مشخص نمی‌کند.

توابع جاوا اسکریپت بررسی‌ای روی آرگومان‌های پاس داده شده انجام نمی‌دهد.

توابع جاوا اسکریپت تعداد آرگومان‌های دریافت شده تابع را بررسی نمی‌کند.

پارامترهای پیشفرض

اگر یک تابع با آرگومان های از یاد رفته (کمتر از تعداد آرگومان‌های تعریف شده) فراخوانی شود، مقادیر پارامترهای از یاد رفته برابر با مقدار undefined می‌شود:

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

مثال

function myFunction(x, y) {
  if (y === undefined) {
    y = 0;
  }
}


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


نسخه ECMAScript 2015 به شما اجازه تعریف مقادیر پیشفرض برای آرگومان‌های تابع در هنگام تعریف تابع را می‌دهد:

function (a=1, b=1) {
  // function code
}

شیء Arguments (به فارسی: آرگومان‌ها)

توابع جاوا اسکریپت یک شیء پیشفرض و تعبیه شده به نام arguments دارند.

شیء arguments شامل آرایه‌ای از آرگومان‌هاست که تابع زمانی که فراخوانی (اجرا) شد، تابع از آنها استفاده می‌کند.

با این روش شما می‌توانید به سادگی از یک تابع برای پیدا کردن (برای مثال) بزرگترین مقدار در لیستی از اعداد استفاده کنید:

مثال

x = findMax(1, 123, 500, 115, 44, 88);

function findMax() {
  var i;
  var max = -Infinity;
  for (i = 0; i < arguments.length; i++) {
    if (arguments[i] > max) {
      max = arguments[i];
    }
  }
  return max;
}


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


یا می‌توانید یک تابع برای جمع کردن تمامی مقادیر ورودی بسازید:

مثال

x = sumAll(1, 123, 500, 115, 44, 88);

function sumAll() {
  var i;
  var sum = 0;
  for (i = 0; i < arguments.length; i++) {
    sum += arguments[i];
  }
  return sum;
}


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


اگر یک تابع با آرگومان‌های زیاد (بیشتر از تعداد آرگومان‌های تعریف شده) فراخوانی شود، به این آرگومان‌ها می‌توان با استفاده از شیء argument object دسترسی داشت.

آرگومان ها با مقدار پاس داده می‌شوند

پارامترها در هنگام فراخوانی تابع، آرگومان‌های تابع هستند.

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

اگر یک تابع مقدار یک آرگومان را تغییر دهد، این کار موجب تغییر مقدار اصلی پارامتر نمی‌شود.

تغییرات آرگومان‌ها قابل مشاهده نیستند، این تغییرات در خارج از تابع تأثیر دارند.

اشیاء با رفرنس پاس داده می‌شوند

در جاوا اسکریپت، رفرنس‌های اشیاء مقادیر هستند.

به خاطر این امر اشیاء همان‌گونه رفتار می‌کنند که رفرنس (Reference) آنها رفتار می‌کند:

اگر یک تابع مقدار یک ویژگی شیء را تغییر دهد این کار موجب تغییر مقدار اصلی می‌شود.

تغییرات به ویژگی شیء قابل مشاهده هستند و بیرون تابع تأثیر دارند.


منابع آموزشی