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

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

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

الدالة مجهولة الاسم (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) هي دالة تُستدعى (يتم تشغيلها) مباشرةً بعد أنْ تُحمَل إلى مُجمِع (مُصنِف - compiler) المُتصفِح. يتم تعريف هذا النوع من الدوال عبر إضافة قوس يساري ويميني إضافيان في نهاية إعلان الدالة (انظر أدناه).

// 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,