مقدمه‌ای بر تابع ECMAScript

تابع چیست؟

تابع مجموعه‌ای از دستورالعمل‌هایی است که می‌توانند در هر زمان و هر جایی اجرا شوند.

تابع هسته‌ی ECMAScript است.

تابع به این صورت اعلام می‌شود: کلیدواژه function، نام تابع، یک مجموعه از پارامترها و کد مورد انتظار در میان پرانتز.

نحوه‌ی پایه‌ی یک تابع به این صورت است:

function functionName(arg0, arg1, ... argN) {
  statements
}

مثال:

function sayHi(sName, sMessage) {
  alert("Hello " + sName + sMessage);
}

چگونه تابع را فراخوانی کنیم؟

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

اگر بخواهید تابع مورد استفاده در مثال بالا را فراخوانی کنید، می‌توانید از کد زیر استفاده کنید:

sayHi("David", " Nice to meet you!")

با فراخوانی تابع sayHi() از بالا یک پنجره هشدار ایجاد می‌شود. شما می‌توانیداین مثال را شخصاً امتحان کنید.

چگونه یک تابع مقدار بازمی‌گرداند؟

توابع sayHi() هیچ مقدار بازگشتی ندارد، اما لازم نیست به صورت خاص آن را اعلام کنید (مانند استفاده از void در Java).

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

function sum(iNum1, iNum2) {
  return iNum1 + iNum2;
}

در کد زیر، مقدار بازگشتی تابع sum به یک متغیر اختصاص داده می‌شود:

var iResult = sum(1,1);
alert(iResult);	// خروج "2"

یک مفهوم مهم دیگر این است که، مانند Java، تابع پس از اجرای دستور return سریعاً اجرای کد را متوقف می‌کند. بنابراین، کد پس از دستور return اجرا نمی‌شود.

مثال، در کد زیر، جعبه هشدار نمایش داده نمی‌شود:

function sum(iNum1, iNum2) {
  return iNum1 + iNum2;
  alert(iNum1 + iNum2);
}

یک تابع می‌تواند چندین دستور return داشته باشد، مانند:

function diff(iNum1, iNum2) {
  if (iNum1 > iNum2) {
    return iNum1 - iNum2;
  }
    return iNum2 - iNum1;
  }
}

این تابع برای بازگشت تفاوت دو عدد است. برای انجام این کار، باید عدد بزرگتر را از عدد کوچکتر کم کرد، بنابراین از دستور if برای تعیین استفاده از کدام دستور return استفاده می‌شود.

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

مثال:

function sayHi(sMessage) {
  if (sMessage == "bye") {
    return;
  }
  alert(sMessage);
}

در این کد، اگر sMessage برابر با "bye" باشد، جعبه هشدار هیچ‌گاه نمایش داده نمی‌شود.

توجه:اگر یک تابع هیچ مقدار بازگشتی واضحی ندارد یا از یک دستور return بدون پارامتر استفاده کرده است، مقدار واقعی بازگشتی آن undefined است.