JavaScript:تعریف تابع در جاوااسکریپت

از ویکی کد
پرش به ناوبری پرش به جستجو
دورهٔ آموزشی جاوااسکریپت
Javascript.jpg
جاوااسکریپت
موارد آموزشی
۱آموزش جاوااسکریپت
۲مقدمه‌ای بر جاوااسکریپت
۳JavaScript:قوانین و اصول اولیه زبان جاوااسکریپت
۴JavaScript:خروجی جاوااسکریپت
۵JavaScript:عبارت‌ها در جاوااسکریپت
۶JavaScript:شیوهٔ نوشتن (Syntax) عبارات یا دستورات در جاوااسکریپت
۷JavaScript:نظرات یا کامنت‌ها (Comments) در جاوااسکریپت
۸JavaScript:متغیرها در جاوااسکریپت
۹JavaScript:عملگرهای جاوااسکریپت
۱۰JavaScript:عملگرهای ریاضی در جاوااسکریپت
۱۱JavaScript:عملگرهای مقداردهی در جاوااسکریپت
۱۲JavaScript:انواع داده‌ها در جاوااسکریپت
۱۳JavaScript:توابع در جاوااسکریپت
۱۴JavaScript:اشیاء (object) در جاوااسکریپت
۱۵JavaScript:رویدادها در جاوااسکریپت
۱۶JavaScript:رشته‌های متنی (string) در جاوااسکریپت
۱۷JavaScript:متدهای نوع داده متنی یا رشته‌ای در جاوااسکریپت
۱۸JavaScript:اعداد در جاوااسکریپت
۱۹JavaScript:متدهای داده‌های عددی در جاوااسکریپت
۲۰JavaScript:آرایه‌ها در جاوااسکریپت
۲۱JavaScript:متدهای آرایه در جاوااسکریپت
۲۲JavaScript:مرتب‌سازی آرایه‌ها در جاوااسکریپت
۲۳JavaScript:متدهای پیمایش آرایه در جاوااسکریپت
۲۴JavaScript:اشیاء تاریخ و زمان در جاوااسکریپت
۲۵JavaScript:فرمت‌های تاریخ و زمان در جاوااسکریپت
۲۶JavaScript:متدهای دریافت تاریخ و زمان در جاوااسکریپت
۲۷JavaScript:متدهای تنظیم زمان و تاریخ در جاوااسکریپت
۲۸JavaScript:شی ریاضی (Math) در جاوااسکریپت
۲۹JavaScript:ایجاد عدد تصادفی در جاوااسکریپت
۳۰JavaScript:مقادیر بولین (Booleans) در جاوااسکریپت
۳۱JavaScript:عملگرهای منطقی و مقایسه‌ای در جاوااسکریپت
۳۲JavaScript:ساختار if else و else if در جاوااسکریپت
۳۳JavaScript:تکه کد Switch در جاوا اسکریپت
۳۴JavaScript:حلقه For در جاوااسکریپت
۳۵JavaScript:حلقه While در جاوااسکریپت
۳۶JavaScript:کلمات کلیدی Break و Continue در جاوااسکریپت
۳۷JavaScript:تبدیل نوع داده‌ها در جاوااسکریپت
۳۸JavaScript:عملیات‌های بیتی در جاوااسکریپت
۳۹JavaScript:عبارات با قاعده در جاوااسکریپت
۴۰JavaScript:خطاها در جاوااسکریپت - رخ دادن خطا و رفع آن
۴۱JavaScript:Scope در جاوااسکریپت
۴۲JavaScript:Hoisting یا جا به جایی کدها در جاوااسکریپت
۴۳JavaScript:استفاده از مد یا حالت سخت‌گیرانه (use strict) در جاوااسکریپت
۴۴JavaScript:کلمه کلیدی This در جاوااسکریپت
۴۵JavaScript:کلمه کلیدی Let در جاوااسکریپت
۴۶JavaScript:ثابت‌ها در جاوااسکریپت
۴۷JavaScript:تعریف توابع به صورت پیکان
۴۸JavaScript:کلاس‌ها در جاوااسکریپت
۴۹JavaScript:اشکال‌زدایی در جاوااسکریپت
۵۰JavaScript:راهنمای استایل و استانداردهای کدنویسی در جاوااسکریپت
۵۱JavaScript:بهترین تمرینات جاوااسکریپت
۵۲JavaScript:اشتباهات رایج در برنامه‌نویسی جاوااسکریپت
۵۳JavaScript:کارایی در جاوااسکریپت
۵۴JavaScript:کلمات رزرو شده در جاوااسکریپت
۵۵JavaScript:ورژن‌های جاوااسکریپت
۵۶JavaScript:ECMAScript 5 - JavaScript 5
۵۷JavaScript:ECMAScript 6 - ECMAScript 2015
۵۸JavaScript:جیسون (JSON) در جاوااسکریپت
فرم‌ها
۱JavaScript:فرم‌ها در جاوااسکریپت
۲JavaScript:API ارزشیابی در جاوااسکریپت
اشیاء (Object)
۱JavaScript:اشیاء در جاوااسکریپت
۲JavaScript:ویژگی‌های اشیاء در جاوااسکریپت
۳JavaScript:متدهای اشیاء در جاوااسکریپت
۴JavaScript:روش‌های دسترسی به شیء در جاوااسکریپت
۵JavaScript:سازنده‌های شیء در جاوااسکریپت
۶JavaScript:شکل اصلی شیء در جاوااسکریپت
۷JavaScript:متدهای شیء در ورژن ES5 جاوااسکریپت
تابع
۱JavaScript:تعریف تابع در جاوااسکریپت
۲JavaScript:پارامتر توابع در جاوااسکریپت
۳JavaScript:فراخوانی تابع در جاوااسکریپت
۴JavaScript:صدا کردن تابع در جاوااسکریپت
۵JavaScript:تابع Apply در جاوااسکریپت
۶JavaScript:بسته‌ها (به انگلیسی: Closures) در جاوااسکریپت
HTML DOM
۱JavaScript:HTML DOM در جاوااسکریپت
۲JavaScript:متدهای HTML DOM در جاوااسکریپت
۳JavaScript:HTML DOM Document در جاوااسکریپت
۴JavaScript:عناصر HTML DOM در جاوااسکریپت
۵JavaScript:HTML DOM در جاوااسکریپت - تغییر محتوای HTML
۶JavaScript:DOM در جاوااسکریپت - تغییر CSS
۷JavaScript:انیمیشن در HTML DOM جاوااسکریپت
۸JavaScript:رویدادها در HTML DOM جاوااسکریپت
۹JavaScript:شنونده رویداد در HTML DOM جاوااسکریپت
۱۰JavaScript:پیمایش در HTML DOM جاوااسکریپت
۱۱JavaScript:عناصر (گره‌ها) HTML DOM در جاوااسکریپت
۱۲JavaScript:مجموعه‌های HTML DOM جاوااسکریپت
۱۳JavaScript:لیست گره‌ها در HTML DOM جاوااسکریپت
Browser BOM
۱JavaScript:پنجره جاوااسکریپت - مدل شیء مرورگر
۲JavaScript:پنجره صفحه نمایش در جاوااسکریپت
۳JavaScript:موقعیت پنجره در جاوااسکریپت
۴JavaScript:تاریخچه پنجره در جاوااسکریپت
۵JavaScript:ناوبری پنجره در جاوااسکریپت
۶JavaScript:جعبه پیغام جاوااسکریپت
۷JavaScript:رویدادهای زمان‌بندی شده در جاوااسکریپت
۸JavaScript:کوکی‌های جاوااسکریپت
AJAX
۱JavaScript:مقدمه‌ای بر AJAX
۲JavaScript:AJAX - شیء XMLHttpRequest
۳JavaScript:AJAX - ارسال یک درخواست به سرور
۴JavaScript:AJAX - پاسخ سرور
۵JavaScript:مثال‌های XML در AJAX
۶JavaScript:مثال‌های PHP در AJAX
۷JavaScript:مثال‌های ASP در AJAX
۸JavaScript:مثال پایگاه داده در AJAX
۹JavaScript:نرم‌افزارهای XML
۱۰JavaScript:مثال‌های AJAX
JSON
۱JavaScript:مقدمه‌ای بر JSON
۲JavaScript:شیوهٔ نوشتار JSON
۳JavaScript:JSON در برابر XML
۴JavaScript:انواع داده‌های مجاز در JSON
۵متد JSON.parse()
۶متد JSON.stringify()
۷JavaScript:اشیاء JSON
۸JavaScript:آرایه‌ها در JSON
۹JavaScript:PHP در JSON
۱۰JavaScript:HTML در JSON
۱۱JavaScript:JSONP
jQuery
۱JavaScript:جاوااسکریپت / انتخابگرهای DOM جی‌کوئری
۲JavaScript:جاوااسکریپت / عناصر HTML جی‌کوئری
۳JavaScript:جاوااسکریپت / استایل‌های CSS در جی‌کوئری
۴JavaScript:جاوااسکریپت / HTML DOM در جی‌کوئری

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

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

تعریف توابع

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

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

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

مثال

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


عبارت توابع

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

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

مثال

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

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

مثال

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

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

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


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

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

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

مثال

var myFunction = new Function("a", "b", "return a * b");

var x = myFunction(4, 3);

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

مثال

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

var x = myFunction(4, 3);


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

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

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

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

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

myFunction(5);

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

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

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

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

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

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

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

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

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

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

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

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

مثال

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

var x = myFunction(4, 3);

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

مثال

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

var x = myFunction(4, 3) * 2;

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

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

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

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

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

مثال

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

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

مثال

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

var txt = myFunction.toString();


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

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

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

مثال

// ES5
var x = function(x, y) {
  return x * y;
}

// ES6
const x = (x, y) => x * y;

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

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

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

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

مثال

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


منابع آموزشی