التصريح عن الدوال في JavaScript
التصريح عن الدالة (function declaration) يُعرِّف دالةً لها معاملات (parameters) معيّنة. يمكن أيضًا تعريف الدوال عبر الدالة البانية Function
وعبر تعابير تعريف الدوال (function expression
).
البنية العامة
function name([param,[, param,[..., param]]]) {
[statements]
}
name
اسم الدالة.
param
اسم الوسيط المُرَّر إلى الدالة، العدد الأقصى للوسائط التي يمكن تمريرها إلى الدالة يختلف حسب المحرِّك الذي يُفسِّر اللغة.
statements
التعابير البرمجية التي تُشكِّل جسم الدالة.
الوصف
الدالة المُصرَّح عنها هي كائن Function
يملك وصولًا إلى جميع خاصياته ودواله ولها نفس سلوك كائنات Function
، راجع صفحة الكائن Function
لمعلومات تفصيلية عن الدوال.
يمكن تعريف الدوال أيضًا عبر تعبير برمجي (انظر صفحة function expression
).
تُعيد الدوال القيمة undefined
افتراضيًا، ولإعادة أيّة قيمة أخرى، فيجب أن تحتوي الدالة على التعبير البرمجي return
الذي يُحدِّد ما هي القيمة التي يجب إعادتها.
الدوال المُنشَأة شرطيًا
يمكن التصريح عن الدوال شرطيًا، أي أنَّ التعبير البرمجي للتصريح عن الدالة يمكن أن يكون موجودًا ضمن تعبير if
، وأغلبية المتصفحات ما عدا Firefox تُعامِل التصريحات الشرطية على أنها غير شرطية وتُنشِئ الدالة سواءً تحقق الشرط أم لم يتحقق؛ ولهذا السبب لا يجدر بنا التصريح عن الدوال شرطيًا وإنما يجب استخدام تعابير إنشاء الدوال (function expression
) بدلًا منها.
استخدام الدوال قبل التصريح عنها
يمكن استخدام الدوال في JavaScript قبل التصريح عنها كما في المثال الآتي:
hoisted(); // "foo"
function hoisted() {
console.log('foo');
}
لاحظ أنَّ الدوال المُنشَأة في تعابير برمجية (function expression
) لا يمكن استخدامها قبل التصريح عنها:
notHoisted(); // TypeError: notHoisted is not a function
var notHoisted = function() {
console.log('bar');
};
أمثلة
الشيفرة الآتية تُصرِّح عن دالة تُعيد القيمة الكلية للمشتريات، وذلك عند تمرير ثلاثة وسائط إليها:
function calc_sales(units_a, units_b, units_c) {
return units_a * 79 + units_b * 129 + units_c * 699;
}
دعم المتصفحات
الميزة | Chrome | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
الدعم الأساسي | نعم | نعم | نعم | نعم | نعم |
مصادر ومواصفات
- مسودة المعيار ECMAScript Latest Draft.
- معيار ECMAScript 2015 (6th Edition).
- معيار ECMAScript 5.1.
- معيار ECMAScript 3rd Edition.
- معيار ECMAScript 1st Edition .