الدالة (بالإنجليزيَّة: Function) هي قطعة من الكود يُمكِن استدعاؤها من جزء آخر أو من قبل نفسها، أو هي مُتغيِّر يشير إلى دالة. عندما تُستدعى الدالة، تُمرَّر المُعطيات إلى الدالة كمُدخلات، كما يُمكِن للدالة - اختياريًا - أن تُعيد مُخرجًا. تُصنَّف الدوال في لغة الجافاسكربت على أنهَّا كائنات.

اسم الدالة هو مُعرِّف يُصرَّح عنه كجزء من كود التصريح عن الدالة. يعتمد مجال اسم الدالة على ما إذا كان اسمها تصريحًا أم تعبيرًا (حيث إذا كان تصريحًا سيُحمَّل قبل تنفيذ الكود، أما إذا كان تعبيرًا  سيُحمَّل عند وصول المُفسِّر إليه. طالع هذا السؤال للمزيد من المعلومات).

الأنواع المختلفة للدوال

الدالة المجهولة (بالإنجليزيَّة: Anonymous function) هي دالة لا تملك اسمًا:

function () {};
// أو باستخدام الأسهم في إصدار EMAScript 2015
() => {};

الدالة المُسمّاة (بالإنجليزيَّة: Named function) هي دالة تملك اسمًا:

function foo() {};
// أو باستخدام الأسهم في إصدار EMAScript 2015
const foo = () => {};

الدالة المُحاطة (بالإنجليزيَّة: Inner function) هي دالة بداخل أخرى (الدالة square كما في مثالنا أدناه). الدالة المُحيطة (outer function) هي دالة (الدالة addSquares كما في مثالنا أدناه) تُحيط بأخرى:

function addSquares(a,b) {
   function square(x) {
      return x * x;
   }
   return square(a) + square(b);
};
//باستخدام الأسهم في إصدار ECMAScript 2015
const addSquares = (a,b) => {
   const square = x => x*x;
   return square(a) + square(b);
};

الدالة العوديّة (بالإنجليزيَّة: Recursive function) هي دالة تستدعي نفسها. طالع المعاودة للمزيد من التفاصيل.

function loop(x) {
   if (x >= 10)
      return;
   loop(x + 1);
};
//باستخدام الأسهم في إصدار ECMAScript 2015
const loop = x => {
   if (x >= 10)
      return;
   loop(x + 1);
};

التعبيرات الداليَّة المُستحضرة فوريًا (بالإنجليزيَّة: Immediately Invoked Function Expressions) هي دوال تُستدعى مباشرةً بعد أنْ تُحمَّل إلى مُصرِّف المُتصفِّح. يُعرَّف هذا النوع من الدوال عبر إضافة قوسان: يساري ويميني إضافيان في نهاية تصريح الدالة (انظر أدناه).

// Error (https://en.wikipedia.org/wiki/Immediately-invoked_function_expression)
/*
​function foo() { 
    console.log('Hello Foo'); 
}();
*/

(function foo() {
    console.log("Hello Foo");
}());

(function food() {
    console.log("Hello Food");
})();

اقرأ هذه المقالة في الموسوعة الحرَّة للمزيد عن هذا النوع من الدوال.

المزيد من التفاصيل

مراجع تقنيّة

Document Tags and Contributors

الوسوم: 
المساهمون في هذه الصفحة: ahmadnourallah
آخر مَن حدّثها: ahmadnourallah,