تعریف تابع

از ویکی‌کد
پرش به ناوبری پرش به جستجو
Main Page Tutorial
JavaScript-menu.png
موارد آموزشی
فرم‌ها در جاوا اسکریپت
تعریف شیء در جاوا اسکریپت
تابع در جاوا اسکریپت
۱تعریف تابع
۲پارامتر توابع
۳فراخوانی تابع
۴صدا کردن تابع
۵تابع Apply
۶بسته‌ها
HTML DOM در جاوا اسکریپت
Browser BOM در جاوا اسکریپت
AJAX در جاوا اسکریپت
JSON در جاوا اسکریپت
جی‌کوئری در برابر جاوا اسکریپت
مثال‌های جاوا اسکریپت
مرجع جاوا اسکریپت

توابع در جاوا اسکریپت با کلمه کلیدی function تعریف می‌شوند.[۱]

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

در فصل‌های قبلی این آموزش، شما یادگرفتید که توابع با شیوه نوشتار (به انگلیسی: syntax) زیر تعریف می‌شوند:

function functionName(parameters) {
  // code to be executed
}

توابع تعریف شده به سرعت اجرا نمی‌شوند. آنها «برای استفاده در آینده ذخیره می‌شوند» و هنگامی که آنها فراخوانی شدند، اجرا می‌گردند.

مثال

1 function myFunction(a, b) {
2   return a * b;
3 }


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


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

تا زمانی که تعریف یک تابع از نوع قابل اجرا نباشد، استفاده از نقطه ویرگول ; در انتهای آن مرسوم نیست.

عبارت توابع

یک تابع جاوا اسکریپت را نیز می‌توان با یک عبارت تعریف کرد.

یک عبارت تابع می‌تواند در یک متغیرذخیره شود:

مثال

var x = function (a, b) {return a * b};


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


بعد ازآن که عبارت تابع در یک متغیر ذخیره شد، می‌توان از آن متغیر همانند یک تابع استفاده کرد:

مثال

1 var x = function (a, b) {return a * b};
2 var z = x(4, 3);


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


تابع فوق یک تابع ناشناس (به انگلیسی: anonymous function) (تابع بدون نام) است.

توابعی که درون متغیرها ذخیره می‌شوند نام نیاز ندارند. آنها با استفاده از نام متغیر اجرا (فراخوانی) می‌شوند.

تابع فوق با یک نقطه ویرگول ; به پایان می‌رسد زیرا که این بخشی از یک عبارت قابل اجراست.

متد سازنده Function()

همان‌طور که در مثال قبل می‌بینید، توابع جاوا اسکریپت با کلمه کلیدی function تعریف می‌شوند.

همچنین توابع را می‌توان بافراخوانی متد سازنده تابع یعنی Function() نیز تعریف کرد.

مثال

1 var myFunction = new Function("a", "b", "return a * b");
2 
3 var x = myFunction(4, 3);


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


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

مثال

1 var myFunction = function (a, b) {return a * b};
2 
3 var x = myFunction(4, 3);


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


بیشتر اوقات، شما می‌توانید از استفاده از کلمهٔ new در جاوا اسکریپت پرهیز کنید.

جا به جایی توابع (به انگلیسی: Hoisting)

در فصل‌های قبلی این آموزش، شما در مورد جابه‌جایی (به انگلیسی: hoisting) در جاوا اسکریپت مطالبی را آموختید.

جابه‌جایی (به انگلیسی: "hoisting") رفتار پیشفرض جاوا اسکریپت برای جابه‌جا کردن تعاریف به بالای ناحیه کد جاری است.

این جابه‌جایی روی تعاریف متغیرها و تعاریف توابع اعمال می‌شود.

به خاطر این امر، توابع جاوا اسکریپت را می‌توان قبل از تعریف آنها، استفاده کرد:

myFunction(5);

function myFunction(y) {
  return y * y;
}

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

توابع خود اجرا

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

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

تابع‌هایی که با یک عبارت تعریف شده‌اند در صورتی که عبارت با ( ) نوشته شود به صورت خودکار اجرا خواهند شد.

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

شما باید اطراف تابع پرانتزها را اضافه کنید تا مشخص کنید که این تابع تک عبارتی است:

1 (function () {
2   var x = "Hello!!";  // I will invoke myself
3 })();


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


تابع بالا یک تابع خود اجرای ناشناس (بدون نام) است.

توابع را می‌تواند همانند مقادیر استفاده کرد

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

مثال

1 function myFunction(a, b) {
2   return a * b;
3 }
4 
5 var x = myFunction(4, 3);


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


توابع جاوا اسکریپت را می‌توان در عبارتهای جاوا اسکریپت استفاده کرد:

مثال

1 function myFunction(a, b) {
2   return a * b;
3 }
4 
5 var x = myFunction(4, 3) * 2;


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


توابع نیز نوعی اشیاء هستند

عملگر typeof در جاوا اسکریپت برای توابع مقدار (به انگلیسی: functions) را برمی‌گرداند.

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

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

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

مثال

1 function myFunction(a, b) {
2   return arguments.length;
3 }


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


متد toString() تابع را به صورت یک رشته متنی برمی‌گرداند:

مثال

1 function myFunction(a, b) {
2   return a * b;
3 }
4 
5 var txt = myFunction.toString();


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


تابعی که به صورت یک ویژگی از یک شیء تعریف شده‌است، متد آن شیء نامیده می‌شود.

تابعی که برای ساخت اشیاء جدید طراحی شده‌است، سازنده شیء (به انگلیسی: object constructor) نامیده می‌شود.

تعریف تابع به صورت پیکان یا فلش

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

شما نیازی به کلمه کلیدی function ، کلمه کلیدی return و یک جفت آکولادها { } ندارید.

مثال

1 // ES5
2 var x = function(x, y) {
3   return x * y;
4 }
5 
6 // ES6
7 const x = (x, y) => x * y;


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


توابع به صورت پیکان یا فلش کلمه کلیدی this مربوط به خود را ندارند. آنها برای استفاده به عنوان متدهای شیء مناسب نیستند.

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

استفاده از کلمه const روش مطمئن تری نسبت به استفاده از کلمه var است، زیرا که یک تابع تک‌جمله‌ای یا تک‌عبارتی همیشه یک مقدار ثابت را برمی‌گرداند.

در صورتی تابع شما تک جمله ای است شما فقط می‌توانید کلمه کلیدی return و جفت آکولادها { } را ننویسید، به خاطر این امر، عادت خوبی است اگر آنها را به صورت زیر بنویسیم:

مثال

const x = (x, y) => { return x * y };


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


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


منابع آموزشی