تعریف توابع JavaScript

توابع جاوااسکریپت از طریق function واژه‌کلیدیتعریفاستفاده کنید.

می‌توانید از توابعاعلامیا توابععبارتاست.

دستور تعریف توابع

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

function نام توابع(پارامترها) {
   کدی که باید اجرا شود
}

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

مثال

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);

به طور مستقیم امتحان کنید

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

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

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

Constructor 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);

به طور مستقیم امتحان کنید

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

برافراشتن توابع

در این آموزش که قبلاً یاد گرفتید، "Hoisting" (برافراشتن) را آموختید.

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

Hoisting به کار می‌رود برای

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

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

توابع تعریف شده با استفاده از عبارت

توابع خودکار فراخوانی شده

توابع عبارتی می‌توانند به عنوان

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

توابع عبارتی خودکار به اجرا در می‌آیند، اگر عبارت ()است.

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

شما باید در اطراف توابع خود پرانتز اضافه کنید، تا نشان دهید که آن یک

مثال

(function () {
    var x = "Hello!!";      // من خودم را فراخوانی می‌کنم
})();

به طور مستقیم امتحان کنید

توابع بالا در واقع یکتوابع خودکار فراخوانی شده(توابع بدون نام).

مقدار استفاده شوند

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

مثال

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 عملگر به توابع بازمی‌گردد "function".

اما بهتر است توابع جاوااسکریپت را به عنوان

همه توابع جاوااسکریپت دارندخصوصیاتومетодاست.

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 ندارند. آنها برای تعریف روش‌های شیء مناسب نیستند.

توابع پیکان به بالا بردن (hoisting) نمی‌شوند. آنها باید قبل از استفاده تعریف شوند.

استفاده از const در مقایسه با var امن‌تر است، زیرا همیشه مقدار ثابت است.

اگر تابع یک جمله واحد است، فقط می‌توانید کلیدواژه return و قفصه‌ها را حذف کنید. بنابراین، نگه داشتن آنها ممکن است یک عادت خوب باشد:

مثال

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

به طور مستقیم امتحان کنید

IE11 و نسخه‌های قدیمی‌تر از آن از توابع پیکان پشتیبانی نمی‌کنند.